Function at 0x403590
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x424f12
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4d0
push ebx
push esi
push edi
mov ecx, 0xfa
xor eax, eax
lea edi, [esp + 0xf4]
rep stosd dword es:[edi], eax
mov eax, dword [0x42d740]
mov dword [esp + 0x18], eax
xor ebx, ebx
lea ecx, [esp + 0x18]
mov dword [esp + 0x4e4], ebx
call fcn.0041e9d8
push str..moveinfo.ini
push 0x4321d4
lea ecx, [esp + 0x20]
push 0x42b170
push ecx
call fcn.0041e13f
mov edx, dword [0x42d740]
add esp, 0x10
mov dword [esp + 0x20], edx
push str.RESIL
lea ecx, [esp + 0x24]
mov byte [esp + 0x4e8], 1
call fcn.0041eb8a
mov eax, dword [0x42d740]
mov dword [esp + 0x1c], eax
push str.RESULT
lea ecx, [esp + 0x20]
mov byte [esp + 0x4e8], 2
call fcn.0041eb8a
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x91]
mov byte [esp + 0x90], bl
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x90]
stosw word es:[edi], ax
push ecx
mov ecx, dword [esp + 0x24]
stosb byte es:[edi], al
mov eax, dword [esp + 0x20]
push 0x64
push edx
push 0x431a78
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edi, [esp + 0x97]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xf4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + eax + 0xf4]
sub cl, 0x11
mov byte [esp + eax + 0x24], cl
inc eax
cmp eax, 8
jl 0x40369f
xor eax, eax
mov dl, byte [esp + eax + 0xfc]
sub dl, 0x11
mov byte [esp + eax + 0x10], dl
inc eax
lea ecx, [eax + 8]
cmp ecx, 0x10
jl 0x4036b5
cmp byte [esp + 0xf4], bl
je 0x4036f2
lea ecx, [esp + 0xf4]
mov al, byte [ecx]
cmp al, 0x61
jl 0x4036ea
cmp al, 0x7a
jg 0x4036ea
sub al, 0x20
mov byte [ecx], al
mov al, byte [ecx + 1]
inc ecx
cmp al, bl
jne 0x4036dc
mov cl, byte [esp + 0x104]
xor eax, eax
cmp cl, bl
je 0x40377a
lea esi, [esp + 0x104]
mov dl, 0x38
movsx ecx, cl
add ecx, 0xffffffd0
cmp ecx, 0x19
ja case.0x40371b.52
xor ebx, ebx
mov bl, byte [ecx + 0x403950]
jmp dword [ebx*4 + 0x40393c]
mov byte [esp + eax + 0x2c], 0x59
jmp case.default.0x403744
mov byte [esp + eax + 0x2c], 0x5a
jmp case.default.0x403744
mov byte [esp + eax + 0x2c], 0x2d
jmp case.default.0x403744
movsx ecx, byte [esi + 1]
inc esi
add ecx, 0xffffffce
cmp ecx, 3
ja case.default.0x403744
jmp dword [ecx*4 + 0x40396c]
mov byte [esp + eax + 0x2c], 0x4d
jmp case.default.0x403744
mov byte [esp + eax + 0x2c], 0x39
jmp case.default.0x403744
mov byte [esp + eax + 0x2c], 0x47
jmp case.default.0x403744
mov byte [esp + eax + 0x2c], dl
jmp case.default.0x403744
mov cl, byte [esi]
sub cl, 2
mov byte [esp + eax + 0x2c], cl
mov cl, byte [esi + 1]
inc eax
inc esi
xor ebx, ebx
cmp cl, bl
jne 0x403708
lea edx, [esp + 0x2c]
mov byte [esp + eax + 0x2c], bl
push edx
push 0x42b96c
call fcn.00402960
lea eax, [esp + 0x34]
push eax
call fcn.00403bb0
add esp, 0xc
test eax, eax
jne 0x4038b6
mov ecx, dword [0x42d740]
mov dword [esp + 0x24], ecx
push str..moveinfo.ini
push 0x4321d4
lea edx, [esp + 0x2c]
push 0x42b170
push edx
mov byte [esp + 0x4f4], 3
call fcn.0041e13f
mov eax, dword [0x42d740]
add esp, 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x4e4], 5
call fcn.0041e9d8
push str.SIGN
lea ecx, [esp + 0x14]
call fcn.0041eb8a
lea ecx, [esp + 0xc]
call fcn.0041e9d8
push str.MOVE
lea ecx, [esp + 0x10]
call fcn.0041eb8a
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push eax
push 0x42b958
push ecx
push edx
call esi
lea ecx, [esp + 0x10]
call fcn.0041e9d8
push str.RESIL
lea ecx, [esp + 0x14]
call fcn.0041eb8a
lea ecx, [esp + 0xc]
call fcn.0041e9d8
push str.RESULT
lea ecx, [esp + 0x10]
call fcn.0041eb8a
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
push eax
push ebx
push ecx
push edx
call esi
push 0x42b948
call fcn.00402960
add esp, 4
call fcn.00403980
lea ecx, [esp + 0xc]
mov byte [esp + 0x4e4], 4
call fcn.0041ea4d
lea ecx, [esp + 0x10]
mov byte [esp + 0x4e4], 3
call fcn.0041ea4d
lea ecx, [esp + 0x24]
mov byte [esp + 0x4e4], 2
call fcn.0041ea4d
jmp 0x4038ee
xor edx, edx
xor ecx, ecx
xor eax, eax
movsx esi, byte [esp + eax + 0x24]
lea edx, [edx + edx*4]
inc eax
cmp eax, 8
lea edx, [esi + edx*2 - 0x30]
jl 0x4038bc
xor eax, eax
movsx esi, byte [esp + eax + 0x10]
lea ecx, [ecx + ecx*4]
inc eax
cmp eax, 8
lea ecx, [esi + ecx*2 - 0x30]
jl 0x4038d0
mov eax, dword [esp + 0x4f0]
mov dword [eax], edx
mov dword [eax + 4], ecx
lea ecx, [esp + 0x1c]
mov byte [esp + 0x4e4], 1
call fcn.0041ea4d
lea ecx, [esp + 0x20]
mov byte [esp + 0x4e4], bl
call fcn.0041ea4d
lea ecx, [esp + 0x18]
mov dword [esp + 0x4e4], 0xffffffff
call fcn.0041ea4d
mov ecx, dword [esp + 0x4dc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x4dc
ret