Function at 0x501700
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x5814
call fcn.00590180
mov eax, dword [0x5fe940]
push ebx
push esi
push edi
push str.EData.dat
mov ecx, 0x60d1c8
mov dword [esp + 0x5820], eax
call fcn.0041aed0
push str.PData.dat
mov ecx, 0x60d1c8
call fcn.004156f0
push 0x5b79ec
push str.GData.dat
call fcn.00436fc0
mov ebx, eax
add esp, 8
test ebx, ebx
mov dword [esp + 0x30], ebx
je 0x5021d7
push ebx
push 1
lea eax, [esp + 0x24]
push 2
push eax
call fcn.00591290
add esp, 0x10
cmp word [esp + 0x1c], 5
je 0x50178b
push 0
push str.Fortress_Renewal
push str.GData.dat_Version_Error
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
push 1
lea ecx, [esp + 0x28]
push 4
push ecx
call fcn.00591290
push ebx
push 1
lea edx, [esp + 0x30]
push 4
push edx
call fcn.00591290
mov eax, dword [esp + 0x40]
push eax
call fcn.00591195
mov ecx, dword [esp + 0x3c]
mov esi, eax
push ecx
mov dword [esp + 0x5c], esi
call fcn.00591195
add esp, 0x28
test esi, esi
mov edi, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], edi
push ebx
jne 0x5017f2
call fcn.00590860
add esp, 4
xor al, al
mov ecx, dword [esp + 0x581c]
call fcn.005900c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x24]
push 1
push edx
push esi
call fcn.00591290
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
add esp, 0x10
push eax
push ecx
push esi
push edi
mov ecx, 0x817258
call fcn.0042f5f0
push 0
mov ecx, 0x6bb1fc
call fcn.00407dd0
xor ebx, ebx
mov dword [esp + 0x28], ebx
lea esi, [edi + 0x100]
mov dword [esp + 0x14], 0x40
jmp 0x501840
cmp byte [edi], 0
je 0x501d9e
mov eax, ebx
imul eax, eax, 0xf90
mov edx, eax
sub edx, edi
mov ecx, edi
lea edi, [edx + 0x6bb20c]
lea ecx, [ecx]
mov dl, byte [ecx]
mov byte [ecx + edi], dl
inc ecx
test dl, dl
jne 0x501860
lea ecx, [esi - 0x80]
mov edx, eax
sub edx, ecx
lea edi, [edx + 0x6bb28c]
mov dl, byte [ecx]
mov byte [ecx + edi], dl
inc ecx
test dl, dl
jne 0x501877
mov edx, eax
sub edx, esi
mov ecx, esi
lea edi, [edx + 0x6bb30c]
lea ecx, [ecx]
mov dl, byte [ecx]
mov byte [ecx + edi], dl
inc ecx
test dl, dl
jne 0x501890
lea ecx, [esi + 0x84]
mov edx, eax
sub edx, ecx
lea edi, [edx + 0x6bb398]
lea ebx, [ebx]
mov dl, byte [ecx]
mov byte [ecx + edi], dl
inc ecx
test dl, dl
jne 0x5018b0
mov ecx, dword [esi + 0x104]
mov dword [eax + 0x6bb41c], ecx
mov edx, dword [esi + 0x108]
mov dword [eax + 0x6bb428], edx
mov ecx, dword [esi + 0x10c]
mov dword [eax + 0x6bb434], ecx
mov edx, dword [esi + 0x80]
mov dword [eax + 0x6bb390], edx
mov ecx, dword [esi + 0x110]
mov dword [eax + 0x6bb440], ecx
mov edx, dword [esi + 0x114]
mov dword [eax + 0x6bb44c], edx
mov ecx, dword [esi + 0x120]
mov dword [eax + 0x6bc07c], ecx
xor ecx, ecx
mov dword [eax + 0x6bb458], ecx
mov edx, dword [esi + 0x118]
mov dword [eax + 0x6bc064], edx
mov edx, dword [esi + 0x11c]
mov dword [eax + 0x6bc070], edx
mov dword [eax + 0x6bc084], ecx
mov ecx, dword [esi + 0x124]
mov dl, byte [eax + 0x6bc118]
xor dl, cl
mov byte [eax + 0x6bc110], dl
mov dl, byte [eax + 0x6bc119]
xor dl, cl
mov byte [eax + 0x6bc114], dl
mov dl, byte [eax + 0x6bc118]
xor dl, ch
mov byte [eax + 0x6bc111], dl
mov dl, byte [eax + 0x6bc119]
xor dl, ch
mov byte [eax + 0x6bc115], dl
mov dl, byte [eax + 0x6bc118]
mov dword [esp + 0x70], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc112], dl
mov dl, byte [eax + 0x6bc119]
xor dl, cl
mov byte [eax + 0x6bc116], dl
mov dl, byte [eax + 0x6bc118]
xor dl, ch
mov byte [eax + 0x6bc113], dl
mov dl, byte [eax + 0x6bc119]
xor dl, ch
mov byte [eax + 0x6bc117], dl
mov ecx, dword [esi + 0x128]
mov dl, byte [eax + 0x6bc128]
xor dl, cl
mov byte [eax + 0x6bc120], dl
mov dl, byte [eax + 0x6bc129]
xor dl, cl
mov byte [eax + 0x6bc124], dl
mov dl, byte [eax + 0x6bc128]
xor dl, ch
mov byte [eax + 0x6bc121], dl
mov dl, byte [eax + 0x6bc129]
xor dl, ch
mov byte [eax + 0x6bc125], dl
mov dl, byte [eax + 0x6bc128]
mov dword [esp + 0x40], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc122], dl
mov dl, byte [eax + 0x6bc129]
xor dl, cl
mov byte [eax + 0x6bc126], dl
mov dl, byte [eax + 0x6bc128]
xor dl, ch
mov byte [eax + 0x6bc123], dl
mov dl, byte [eax + 0x6bc129]
xor dl, ch
mov byte [eax + 0x6bc127], dl
mov ecx, dword [esi + 0x12c]
mov dl, byte [eax + 0x6bc138]
xor dl, cl
mov byte [eax + 0x6bc130], dl
mov dl, byte [eax + 0x6bc139]
mov dword [esp + 0x48], ecx
xor dl, cl
mov byte [eax + 0x6bc134], dl
mov dl, byte [eax + 0x6bc138]
xor dl, ch
mov byte [eax + 0x6bc131], dl
mov dl, byte [eax + 0x6bc139]
xor dl, ch
mov byte [eax + 0x6bc135], dl
mov dl, byte [eax + 0x6bc138]
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc132], dl
mov dl, byte [eax + 0x6bc139]
xor dl, cl
mov byte [eax + 0x6bc136], dl
mov dl, byte [eax + 0x6bc138]
xor dl, ch
mov byte [eax + 0x6bc133], dl
mov dl, byte [eax + 0x6bc139]
xor dl, ch
mov byte [eax + 0x6bc137], dl
mov ecx, dword [esi + 0x130]
mov dl, byte [eax + 0x6bc148]
xor dl, cl
mov byte [eax + 0x6bc140], dl
mov dl, byte [eax + 0x6bc149]
xor dl, cl
mov byte [eax + 0x6bc144], dl
mov dl, byte [eax + 0x6bc148]
xor dl, ch
mov byte [eax + 0x6bc141], dl
mov dl, byte [eax + 0x6bc149]
xor dl, ch
mov byte [eax + 0x6bc145], dl
mov dl, byte [eax + 0x6bc148]
mov dword [esp + 0x50], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc142], dl
mov dl, byte [eax + 0x6bc149]
xor dl, cl
mov byte [eax + 0x6bc146], dl
mov dl, byte [eax + 0x6bc148]
xor dl, ch
mov byte [eax + 0x6bc143], dl
mov dl, byte [eax + 0x6bc149]
xor dl, ch
mov byte [eax + 0x6bc147], dl
mov ecx, dword [esi + 0x134]
mov dl, byte [eax + 0x6bc158]
xor dl, cl
mov byte [eax + 0x6bc150], dl
mov dl, byte [eax + 0x6bc159]
xor dl, cl
mov byte [eax + 0x6bc154], dl
mov dl, byte [eax + 0x6bc158]
xor dl, ch
mov byte [eax + 0x6bc151], dl
mov dl, byte [eax + 0x6bc159]
xor dl, ch
mov byte [eax + 0x6bc155], dl
mov dl, byte [eax + 0x6bc158]
mov dword [esp + 0x38], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc152], dl
mov dl, byte [eax + 0x6bc159]
xor dl, cl
mov byte [eax + 0x6bc156], dl
mov dl, byte [eax + 0x6bc158]
xor dl, ch
mov byte [eax + 0x6bc153], dl
mov dl, byte [eax + 0x6bc159]
xor dl, ch
mov byte [eax + 0x6bc157], dl
mov ecx, dword [esi + 0x138]
mov dl, byte [eax + 0x6bc168]
xor dl, cl
mov byte [eax + 0x6bc160], dl
mov dl, byte [eax + 0x6bc169]
mov dword [esp + 0x78], ecx
xor dl, cl
mov byte [eax + 0x6bc164], dl
mov dl, byte [eax + 0x6bc168]
xor dl, ch
mov byte [eax + 0x6bc161], dl
mov dl, byte [eax + 0x6bc169]
xor dl, ch
mov byte [eax + 0x6bc165], dl
mov dl, byte [eax + 0x6bc168]
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc162], dl
mov dl, byte [eax + 0x6bc169]
xor dl, cl
mov byte [eax + 0x6bc166], dl
mov dl, byte [eax + 0x6bc168]
xor dl, ch
mov byte [eax + 0x6bc163], dl
mov dl, byte [eax + 0x6bc169]
xor dl, ch
mov byte [eax + 0x6bc167], dl
mov ecx, dword [esi + 0x13c]
mov dl, byte [eax + 0x6bc178]
xor dl, cl
mov byte [eax + 0x6bc170], dl
mov dl, byte [eax + 0x6bc179]
xor dl, cl
mov byte [eax + 0x6bc174], dl
mov dl, byte [eax + 0x6bc178]
xor dl, ch
mov byte [eax + 0x6bc171], dl
mov dl, byte [eax + 0x6bc179]
xor dl, ch
mov byte [eax + 0x6bc175], dl
mov dl, byte [eax + 0x6bc178]
mov dword [esp + 0x68], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc172], dl
mov dl, byte [eax + 0x6bc179]
xor dl, cl
mov byte [eax + 0x6bc176], dl
mov dl, byte [eax + 0x6bc178]
xor dl, ch
mov byte [eax + 0x6bc173], dl
mov dl, byte [eax + 0x6bc179]
xor dl, ch
mov byte [eax + 0x6bc177], dl
mov ecx, dword [esi + 0x140]
mov dl, byte [eax + 0x6bc188]
xor dl, cl
mov byte [eax + 0x6bc180], dl
mov dl, byte [eax + 0x6bc189]
xor dl, cl
mov byte [eax + 0x6bc184], dl
mov dl, byte [eax + 0x6bc188]
xor dl, ch
mov byte [eax + 0x6bc181], dl
mov dl, byte [eax + 0x6bc189]
xor dl, ch
mov byte [eax + 0x6bc185], dl
mov dl, byte [eax + 0x6bc188]
mov dword [esp + 0x60], ecx
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc182], dl
mov dl, byte [eax + 0x6bc189]
xor dl, cl
mov byte [eax + 0x6bc186], dl
mov dl, byte [eax + 0x6bc188]
xor dl, ch
mov byte [eax + 0x6bc183], dl
mov dl, byte [eax + 0x6bc189]
xor dl, ch
mov byte [eax + 0x6bc187], dl
mov ecx, dword [esi + 0x144]
mov dl, byte [eax + 0x6bc198]
xor dl, cl
mov byte [eax + 0x6bc190], dl
mov dl, byte [eax + 0x6bc199]
mov dword [esp + 0x58], ecx
xor dl, cl
mov byte [eax + 0x6bc194], dl
mov dl, byte [eax + 0x6bc198]
xor dl, ch
mov byte [eax + 0x6bc191], dl
mov dl, byte [eax + 0x6bc199]
xor dl, ch
mov edi, dword [esp + 0x10]
mov byte [eax + 0x6bc195], dl
mov dl, byte [eax + 0x6bc198]
shr ecx, 0x10
xor dl, cl
mov byte [eax + 0x6bc192], dl
mov dl, byte [eax + 0x6bc199]
xor dl, cl
mov byte [eax + 0x6bc196], dl
mov dl, byte [eax + 0x6bc198]
xor dl, ch
mov byte [eax + 0x6bc193], dl
mov dl, byte [eax + 0x6bc199]
xor dl, ch
mov byte [eax + 0x6bc197], dl
inc ebx
mov eax, dword [esp + 0x14]
add edi, 0x248
add esi, 0x248
dec eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
jne 0x501840
mov al, byte [0x6bb208]
mov cl, al
xor cl, bl
mov byte [0x6bb200], cl
mov cl, byte [0x6bb209]
mov dl, cl
xor dl, bl
mov byte [0x6bb204], dl
mov dl, al
xor dl, bh
mov byte [0x6bb201], dl
mov dl, cl
xor dl, bh
mov dword [esp + 0x28], ebx
mov byte [0x6bb205], dl
mov edx, dword [esp + 0x28]
shr edx, 0x10
mov bl, al
xor bl, dl
mov byte [0x6bb202], bl
mov bl, cl
xor bl, dl
mov edx, dword [esp + 0x28]
shr edx, 0x18
xor cl, dl
xor al, dl
mov byte [0x6bb207], cl
mov byte [0x6bb203], al
xor eax, eax
mov ecx, 0x19
lea edi, [esp + 0x5650]
rep stosd dword es:[edi], eax
lea edx, [esp + 0x541c]
mov ecx, 0xc
mov byte [0x6bb206], bl
sub ecx, edx
mov edx, dword [esp + 0x10]
mov ebx, 1
mov dword [0x719ecc], ebx
mov eax, 0x709c78
mov dword [esp + 0x14], ecx
jmp 0x501e62
mov ebx, 1
mov esi, edx
mov ecx, 0x8d
lea edi, [esp + 0x5418]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x5418]
add edx, 0x234
test edi, edi
je 0x501f9a
cmp byte [esp + edi + 0x5650], bl
je 0x5021ab
mov byte [esp + edi + 0x5650], bl
lea ecx, [esp + 0x541c]
mov bl, byte [ecx]
mov esi, dword [esp + 0x14]
add esi, eax
mov byte [ecx + esi], bl
inc ecx
test bl, bl
jne 0x501ea2
mov ecx, dword [esp + 0x549c]
mov dword [eax + 4], edi
mov dword [eax + 0x90], ecx
mov ecx, dword [esp + 0x54a0]
mov dword [eax + 0x9c], ecx
mov ecx, dword [esp + 0x54a4]
mov dword [eax + 0xa8], ecx
mov ecx, dword [esp + 0x54a8]
mov esi, dword [esp + 0x54c0]
mov dword [eax + 0xb4], ecx
mov ecx, dword [esp + 0x54ac]
mov dword [eax + 0xc0], ecx
mov ecx, dword [esp + 0x54b0]
mov dword [eax + 0xcc], ecx
mov ecx, dword [esp + 0x54b4]
mov dword [eax + 0xd8], ecx
mov ecx, dword [esp + 0x54b8]
mov dword [eax + 0xe4], ecx
mov ecx, dword [esp + 0x54bc]
mov dword [eax + 0xf0], ecx
mov dword [eax + 0xfc], esi
mov dword [eax + 0x108], ecx
mov ecx, dword [esp + 0x54c8]
mov dword [eax + 0x114], ecx
lea ecx, [esp + 0x54cc]
mov esi, eax
mov edi, ecx
sub esi, edi
add esi, 0x11c
mov dword [esp + 0x10], esi
mov bl, byte [ecx]
mov esi, dword [esp + 0x10]
mov byte [ecx + esi], bl
inc ecx
test bl, bl
jne 0x501f61
lea ecx, [esp + 0x554c]
mov esi, eax
mov edi, ecx
sub esi, edi
add esi, 0x19c
mov dword [esp + 0x10], esi
mov bl, byte [ecx]
mov esi, dword [esp + 0x10]
mov byte [ecx + esi], bl
inc ecx
test bl, bl
jne 0x501f86
inc dword [0x719ecc]
add eax, 0x29c
cmp eax, 0x719ecc
jl 0x501e5d
mov eax, dword [esp + 0x18]
add edx, 0x234
mov esi, edx
add edx, 0xc8
mov ecx, 0x32
lea edi, [esp + 0x5650]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
add edx, 0x640
mov ecx, 0x190
lea edi, [esp + 0x6c0]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
add edx, 0x1068
mov ecx, 0x41a
lea edi, [esp + 0x43b0]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
add edx, 0x36b0
mov ecx, 0xdac
lea edi, [esp + 0xd00]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
add edx, 0x640
mov ecx, 0x190
lea edi, [esp + 0x80]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
mov ecx, 0x3200
mov edi, 0x600038
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x24]
add edx, 0xc800
sub edx, esi
cmp edx, eax
jbe 0x50207a
mov ecx, dword [0x60d19c]
push edx
push eax
push 0x1c2
call fcn.004fef50
push eax
lea edx, [esp + 0x5724]
push edx
call fcn.0059000d
add esp, 0x10
push 0
push str.GDATA.dat_error
lea eax, [esp + 0x5720]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x43b0]
lea eax, [esp + 0x5650]
mov dword [esp + 0x14], ecx
mov ecx, 0x8b40fc
lea edx, [esp + 0x6c0]
mov esi, 0x8b2e3c
mov edi, 0x8b2be4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [edi], eax
mov ebx, 8
mov eax, dword [edx]
mov dword [esi], eax
add edx, 4
add esi, 0xc
dec ebx
jne 0x5020b3
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], 0x15
lea esp, [esp]
mov ebx, dword [eax]
mov dword [ecx], ebx
mov ebx, dword [esp + 0x14]
add eax, 4
add ecx, 0xc
dec ebx
mov dword [esp + 0x14], ebx
jne 0x5020d0
mov ebx, dword [esp + 0x10]
add ebx, 4
add edi, 0xc
cmp edi, 0x8b2e3c
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
jl 0x5020a6
lea ecx, [esp + 0xd00]
mov eax, 0x8b7234
jmp 0x502110
mov edx, 0xe
mov esi, dword [ecx]
mov dword [eax], esi
add ecx, 4
add eax, 0xc
dec edx
jne 0x502115
cmp eax, 0x8c1644
jl 0x502110
lea ecx, [esp + 0x80]
mov eax, 0x8c1644
mov edx, 2
lea ebx, [ebx]
mov esi, dword [ecx]
mov dword [eax], esi
add ecx, 4
add eax, 0xc
dec edx
jne 0x502140
cmp eax, 0x8c2904
jl 0x502135
or edx, 0xffffffff
mov eax, 0x60c860
xor ecx, ecx
mov edi, edi
mov dword [eax - 0x28], edx
mov byte [eax - 0x20], cl
mov dword [eax], edx
mov dword [eax - 0x24], ecx
add eax, 0x2c
cmp eax, 0x60d0f8
jl 0x502160
mov ecx, dword [esp + 0x34]
push ecx
call fcn.0059107d
mov edx, dword [esp + 0x28]
push edx
call fcn.0059107d
mov eax, dword [esp + 0x38]
push eax
call fcn.00590860
add esp, 0xc
mov al, 1
mov ecx, dword [esp + 0x581c]
call fcn.005900c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x60d19c]
push 0
push 0x1c1
call fcn.004fef50
mov ecx, dword [0x60d19c]
push eax
push 0x2a9
call fcn.004fef50
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [esp + 0x581c]
xor al, al
call fcn.005900c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret