Function at 0x424460
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x424
mov eax, dword [0x4fc00c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ecx + 4]
push ebx
lea ebx, [ecx + 4]
push esi
push edi
test eax, eax
je 0x42448f
push eax
call fcn.0047d79d
add esp, 4
mov dword [ebx], 0
sub esp, 0xc
lea ecx, [ebp - 0x218]
xor eax, eax
mov dword [ebx + 4], eax
push str.play01
push str.ACH_PLAY_01
push eax
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.play10
push str.ACH_PLAY_10
push 1
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.play100
push str.ACH_PLAY_100
push 2
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.win01
push str.ACH_WIN_01
push 3
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.win10
push str.ACH_WIN_10
push 4
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.win100
push str.ACH_WIN_100
push 5
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.defeat01
push str.ACH_DEFEAT_01
push 6
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.defeat10
push str.ACH_DEFEAT_10
push 7
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.destroyGoa100
push str.ACH_DESTROY_GOA_100
push 8
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.destroyGoa1000
push str.ACH_DESTROY_GOA_1000
push 9
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.destroyGoa10000
push str.ACH_DESTROY_GOA_10000
push 0xa
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.destroyGoa100000
push str.ACH_DESTROY_GOA_100000
push 0xb
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.parasol01
push str.ACH_PARASOL_GET_01
push 0xc
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.parasol50
push str.ACH_PARASOL_GET_50
push 0xd
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.parasol100
push str.ACH_PARASOL_GET_100
push 0xe
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.cardboard01
push str.ACH_DANBOOL_GET_01
push 0xf
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.cardboard50
push str.ACH_DANBOOL_GET_50
push 0x10
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.cardboard100
push str.ACH_DANBOOL_GET_100
push 0x11
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot00LvMax
push str.ACH_SHOT_00_LV_MAX
push 0x12
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot01LvMax
push str.ACH_SHOT_01_LV_MAX
push 0x13
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot02LvMax
push str.ACH_SHOT_02_LV_MAX
push 0x14
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot03LvMax
push str.ACH_SHOT_03_LV_MAX
push 0x15
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot04LvMax
push str.ACH_SHOT_04_LV_MAX
push 0x16
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot05LvMax
push str.ACH_SHOT_05_LV_MAX
push 0x17
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot06LvMax
push str.ACH_SHOT_06_LV_MAX
push 0x18
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot07LvMax
push str.ACH_SHOT_07_LV_MAX
push 0x19
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot08LvMax
push str.ACH_SHOT_08_LV_MAX
push 0x1a
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.shot09LvMax
push str.ACH_SHOT_09_LV_MAX
push 0x1b
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.lifeLvMax
push str.ACH_LIFEUP_LV_MAX
push 0x1c
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.speedLvMax
push str.ACH_SPEEDUP_LV_MAX
push 0x1d
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.equipShotLvMax
push str.ACH_ATTACK_LV_MAX
push 0x1e
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugLifeMax
push str.ACH_UPGRADE_LIFE_MAX
push 0x1f
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugSpeedMax
push str.ACH_UPGRADE_SPEED_MAX
push 0x20
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugParasolMax
push str.ACH_UPGRADE_POP_DANBOOL_MAX
push 0x21
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugCardboardMax
push str.ACH_UPGRADE_POP_PARASOL_MAX
push 0x22
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugRecoveryMax
push str.ACH_UPGRADE_RECOVERY_MAX
push 0x23
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugSectionMax
push str.ACH_UPGRADE_SUCTION_MAX
push 0x24
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.ugCameraMax
push str.ACH_UPGRADE_CAMERA_MAX
push 0x25
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.still01
push str.ACH_STILL_GET_FIRST
push 0x26
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.still25p
push str.ACH_STILL_GET_25_PERCENT
push 0x27
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.still50p
push str.ACH_STILL_GET_50_PERCENT
push 0x28
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.still100p
push str.ACH_STILL_GET_100_PERCENT
push 0x29
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.mileage_100
push str.ACH_MILEAGE_100
push 0x2a
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.mileage_1000
push str.ACH_MILEAGE_1000
push 0x2b
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.mileage_10000
push str.ACH_MILEAGE_10000
push 0x2c
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
sub esp, 0xc
lea ecx, [ebp - 0x218]
push str.mileage_100000
push str.ACH_MILEAGE_100000
push 0x2d
call fcn.00421210
push eax
mov ecx, ebx
call fcn.00421ec0
push 0x200
lea eax, [ebp - 0x418]
push 0
push eax
call fcn.0047ebc0
add esp, 0xc
lea edx, [ebp - 0x41c]
mov ecx, str.aibeach_ach.sdf
call fcn.0044eb80
mov esi, eax
mov dword [ebp - 0x424], esi
test esi, esi
jne 0x424b0b
push str.aibeach_ach.sdf
lea eax, [ebp - 0x418]
push str.open_achievement_failed:_s
push eax
call fcn.0044d1b0
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0047d312
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x41c]
mov edx, 7
xor eax, eax
cmp edi, edx
jbe 0x424b38
nop dword [eax]
mov cl, byte [eax + 0x4dd178]
xor byte [edx + esi], cl
lea ecx, [eax + 1]
inc edx
cmp ecx, 0x40
sbb eax, eax
and eax, ecx
cmp edx, edi
jb 0x424b20
cmp dword [esi], 0x43414241
je 0x424b5e
push str.achievement_label_error
lea eax, [ebp - 0x418]
push 0x200
push eax
call fcn.00483128
add esp, 0xc
jmp 0x424bdd
movzx edi, word [esi + 4]
cmp di, word [ebx + 6]
je 0x424b6f
push str.achievement_list_count_error
jmp 0x424b45
mov eax, dword [ebx]
test eax, eax
je 0x424b84
push eax
call fcn.0047d79d
add esp, 4
mov dword [ebx], 0
xor eax, eax
mov dword [ebx + 4], eax
cmp ax, di
jae 0x424bdd
lea eax, [esi + 6]
mov dword [ebp - 0x41c], edi
nop word [eax + eax]
mov esi, eax
lea edi, [ebp - 0x218]
add eax, 0x20c
mov ecx, 0x83
mov dword [ebp - 0x420], eax
lea eax, [ebp - 0x218]
rep movsd dword es:[edi], dword [esi]
push eax
mov ecx, ebx
call fcn.00421ec0
sub dword [ebp - 0x41c], 1
mov eax, dword [ebp - 0x420]
jne 0x424ba0
mov esi, dword [ebp - 0x424]
push 0x8000
push 0
push esi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0047d312
mov esp, ebp
pop ebp
ret