.align 2
.thumb
push {r0-r7,lr}
ldrh r0, .memory
add r0, #0x20
mov r2, #0x0
mov r3, #0x2
mov r4, #0x0
checksum:
cmp r2, #0x30
beq encriptar2
ldrh r1, [r0,r2]
add r4, r4, r1
add r2, r2, r3
b checksum
encriptar2:
ldr r1, .var_8000
ldrh r1, [r1]
mov r0, #0x64
mul r1, r0
ldr r0, .party
add r2, r0, r1
ldr r0, .memory
ldr r7, [r0,#0x50]
strh r4, [r0,#0x1C]
ldr r1, [r0]
ldr r5, [r0,#0x4]
eor r1, r5
mov r6, r1
mov r5, r0
ldr r0, [r0]
seguir2:
ldr r1, =0x18000000
cmp r0, r1
blo seguir3
sub r0, r0, r1
b seguir2
seguir3:
ldr r1, =0x1800000
cmp r0, r1
blo seguir4
sub r0, r0, r1
b seguir3
seguir4:
ldr r1, =0x180000
cmp r0, r1
blo seguir5
sub r0, r0, r1
b seguir4
seguir5:
ldr r1, =0x18000
cmp r0, r1
blo seguir6
sub r0, r0, r1
b seguir5
seguir6:
ldr r1, =0x1800
cmp r0, r1
blo seguir7
sub r0, r0, r1
b seguir6
seguir7:
ldr r1, =0x180
cmp r0, r1
blo seguir8
sub r0, r0, r1
b seguir7
seguir8:
ldr r1, =0x18
cmp r0, r1
blo continuar
sub r0, r0, r1
b seguir8
continuar:
str r0, [r2,#0x50]
mov r0, r5
mov r5, #0x0
ldr r3, [r0]
str r3, [r2]
ldr r3, [r0,#0x4]
str r3, [r2,#0x4]
ldr r3, [r0,#0x8]
str r3, [r2,#0x8]
ldr r3, [r0,#0xC]
str r3, [r2,#0xC]
ldr r3, [r0,#0x10]
str r3, [r2,#0x10]
ldr r3, [r0,#0x14]
str r3, [r2,#0x14]
ldr r3, [r0,#0x18]
str r3, [r2,#0x18]
ldr r3, [r0,#0x1C]
str r3, [r2,#0x1C]
mov r5, #0x50
ldr r4, =0x50
ldrb r5, [r2,r4]
mov r1, r6
cmp r5, #0x6
blo g_pri
cmp r5, #0xC
blo a_pri
cmp r5, #0x12
blo e_pri
cmp r5, #0x18
blo m_pri
g_pri:
mov r3, #0x0
ldr r3, [r0,#0x20]
eor r3, r1
str r3, [r2,#0x20]
ldr r3, [r0,#0x24]
eor r3, r1
str r3, [r2,#0x24]
ldr r3, [r0,#0x28]
eor r3, r1
str r3, [r2,#0x28]
b segunda
a_pri:
mov r3, #0x0
ldr r3, [r0,#0x2C]
eor r3, r1
str r3, [r2,#0x20]
ldr r3, [r0,#0x30]
eor r3, r1
str r3, [r2,#0x24]
ldr r3, [r0,#0x34]
eor r3, r1
str r3, [r2,#0x28]
b segunda
e_pri:
mov r3, #0x0
ldr r3, [r0,#0x38]
eor r3, r1
str r3, [r2,#0x20]
ldr r3, [r0,#0x3C]
eor r3, r1
str r3, [r2,#0x24]
ldr r3, [r0,#0x40]
eor r3, r1
str r3, [r2,#0x28]
b segunda
m_pri:
mov r3, #0x0
ldr r3, [r0,#0x44]
eor r3, r1
str r3, [r2,#0x20]
ldr r3, [r0,#0x48]
eor r3, r1
str r3, [r2,#0x24]
ldr r3, [r0,#0x4C]
eor r3, r1
str r3, [r2,#0x28]
segunda:
mov r3, #0x0
cmp r5, #0x6
beq g_seg
cmp r5, #0x7
beq g_seg
cmp r5, #0xC
beq g_seg
cmp r5, #0xD
beq g_seg
cmp r5, #0x12
beq g_seg
cmp r5, #0x13
beq g_seg
cmp r5, #0x0
beq a_seg
cmp r5, #0x1
beq a_seg
cmp r5, #0xE
beq a_seg
cmp r5, #0xF
beq a_seg
cmp r5, #0x14
beq a_seg
cmp r5, #0x15
beq a_seg
cmp r5, #0x2
beq e_seg
cmp r5, #0x3
beq e_seg
cmp r5, #0x8
beq e_seg
cmp r5, #0x9
beq e_seg
cmp r5, #0x16
beq e_seg
cmp r5, #0x17
beq e_seg
cmp r5, #0x4
beq m_seg
cmp r5, #0x5
beq m_seg
cmp r5, #0xA
beq m_seg
cmp r5, #0xB
beq m_seg
cmp r5, #0x10
beq m_seg
cmp r5, #0x11
beq m_seg
g_seg:
mov r3, #0x0
ldr r3, [r0,#0x20]
eor r3, r1
str r3, [r2,#0x2C]
ldr r3, [r0,#0x24]
eor r3, r1
str r3, [r2,#0x30]
ldr r3, [r0,#0x28]
eor r3, r1
str r3, [r2,#0x34]
b tercera
a_seg:
mov r3, #0x0
ldr r3, [r0,#0x2C]
eor r3, r1
str r3, [r2,#0x2C]
ldr r3, [r0,#0x30]
eor r3, r1
str r3, [r2,#0x30]
ldr r3, [r0,#0x34]
eor r3, r1
str r3, [r2,#0x34]
b tercera
e_seg:
mov r3, #0x0
ldr r3, [r0,#0x38]
eor r3, r1
str r3, [r2,#0x2C]
ldr r3, [r0,#0x3C]
eor r3, r1
str r3, [r2,#0x30]
ldr r3, [r0,#0x40]
eor r3, r1
str r3, [r2,#0x34]
b tercera
m_seg:
mov r3, #0x0
ldr r3, [r0,#0x44]
eor r3, r1
str r3, [r2,#0x2C]
ldr r3, [r0,#0x48]
eor r3, r1
str r3, [r2,#0x30]
ldr r3, [r0,#0x4C]
eor r3, r1
str r3, [r2,#0x34]
tercera:
mov r3, #0x0
cmp r5, #0x8
beq g_ter
cmp r5, #0xA
beq g_ter
cmp r5, #0xE
beq g_ter
cmp r5, #0x10
beq g_ter
cmp r5, #0x14
beq g_ter
cmp r5, #0x16
beq g_ter
cmp r5, #0x2
beq a_ter
cmp r5, #0x4
beq a_ter
cmp r5, #0xC
beq a_ter
cmp r5, #0x11
beq a_ter
cmp r5, #0x12
beq a_ter
cmp r5, #0x17
beq a_ter
cmp r5, #0x0
beq e_ter
cmp r5, #0x5
beq e_ter
cmp r5, #0x6
beq e_ter
cmp r5, #0xB
beq e_ter
cmp r5, #0x13
beq e_ter
cmp r5, #0x15
beq e_ter
cmp r5, #0x1
beq m_ter
cmp r5, #0x3
beq m_ter
cmp r5, #0x7
beq m_ter
cmp r5, #0x9
beq m_ter
cmp r5, #0xD
beq m_ter
cmp r5, #0xF
beq m_ter
g_ter:
mov r3, #0x0
ldr r3, [r0,#0x20]
eor r3, r1
str r3, [r2,#0x38]
ldr r3, [r0,#0x24]
eor r3, r1
str r3, [r2,#0x3C]
ldr r3, [r0,#0x28]
eor r3, r1
str r3, [r2,#0x40]
b cuarta
a_ter:
mov r3, #0x0
ldr r3, [r0,#0x2C]
eor r3, r1
str r3, [r2,#0x38]
ldr r3, [r0,#0x30]
eor r3, r1
str r3, [r2,#0x3C]
ldr r3, [r0,#0x34]
eor r3, r1
str r3, [r2,#0x40]
b cuarta
e_ter:
mov r3, #0x0
ldr r3, [r0,#0x38]
eor r3, r1
str r3, [r2,#0x38]
ldr r3, [r0,#0x3C]
eor r3, r1
str r3, [r2,#0x3C]
ldr r3, [r0,#0x40]
eor r3, r1
str r3, [r2,#0x40]
b cuarta
m_ter:
mov r3, #0x0
ldr r3, [r0,#0x44]
eor r3, r1
str r3, [r2,#0x38]
ldr r3, [r0,#0x48]
eor r3, r1
str r3, [r2,#0x3C]
ldr r3, [r0,#0x4C]
eor r3, r1
str r3, [r2,#0x40]
cuarta:
mov r3, #0x0
cmp r5, #0x9
beq g_cua
cmp r5, #0xB
beq g_cua
cmp r5, #0xF
beq g_cua
cmp r5, #0x11
beq g_cua
cmp r5, #0x15
beq g_cua
cmp r5, #0x17
beq g_cua
cmp r5, #0x3
beq a_cua
cmp r5, #0x5
beq a_cua
cmp r5, #0xD
beq a_cua
cmp r5, #0x10
beq a_cua
cmp r5, #0x13
beq a_cua
cmp r5, #0x16
beq a_cua
cmp r5, #0x1
beq e_cua
cmp r5, #0x4
beq e_cua
cmp r5, #0x7
beq e_cua
cmp r5, #0xA
beq e_cua
cmp r5, #0x12
beq e_cua
cmp r5, #0x14
beq e_cua
cmp r5, #0x0
beq m_cua
cmp r5, #0x2
beq m_cua
cmp r5, #0x6
beq m_cua
cmp r5, #0x8
beq m_cua
cmp r5, #0xC
beq m_cua
cmp r5, #0xE
beq m_cua
g_cua:
mov r3, #0x0
ldr r3, [r0,#0x20]
eor r3, r1
str r3, [r2,#0x44]
ldr r3, [r0,#0x24]
eor r3, r1
str r3, [r2,#0x48]
ldr r3, [r0,#0x28]
eor r3, r1
str r3, [r2,#0x4C]
b salir
a_cua:
mov r3, #0x0
ldr r3, [r0,#0x2C]
eor r3, r1
str r3, [r2,#0x44]
ldr r3, [r0,#0x30]
eor r3, r1
str r3, [r2,#0x48]
ldr r3, [r0,#0x34]
eor r3, r1
str r3, [r2,#0x4C]
b salir
e_cua:
mov r3, #0x0
ldr r3, [r0,#0x38]
eor r3, r1
str r3, [r2,#0x44]
ldr r3, [r0,#0x3C]
eor r3, r1
str r3, [r2,#0x48]
ldr r3, [r0,#0x40]
eor r3, r1
str r3, [r2,#0x4C]
b salir
m_cua:
mov r3, #0x0
ldr r3, [r0,#0x44]
eor r3, r1
str r3, [r2,#0x44]
ldr r3, [r0,#0x48]
eor r3, r1
str r3, [r2,#0x48]
ldr r3, [r0,#0x4C]
eor r3, r1
str r3, [r2,#0x4C]
salir:
str r7, [r2,#0x50]
pop {r0-r7,pc}
.party: .word 0x02024284
.var_8000: .word 0x020370B8
.memory: .word 0x0203f500