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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x28
push ebx
mov ebx, ecx
push ebp
push esi
push edi
mov edx, dword [ebx + 4]
mov esi, dword [ebx + 8]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x18], edx
cmp dword [edx + 0x58], 0
je 0x51258d
call fcn.00511e40
jmp 0x51299b
mov edi, dword [ebx]
mov ebp, edx
mov dword [esp + 0x14], edi
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 0x20]
cmp eax, str.nth_value
je 0x5129c8
cmp eax, str.first_value
je 0x5129c8
cmp eax, str.lead
je 0x5125c7
cmp eax, 0x5995a8
jne 0x51298c
mov eax, dword [ebp + 0x48]
mov eax, dword [eax + 0x14]
mov ecx, dword [eax]
mov eax, dword [ebp + 0x3c]
dec dword [edi + 0x38]
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x28], eax
mov al, byte [edi + 0x13]
mov dword [esp + 0x30], ecx
test al, al
jne 0x5125f3
inc dword [edi + 0x2c]
mov ebx, dword [edi + 0x2c]
jmp 0x512602
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov ebx, dword [edi + eax*4 + 0x98]
mov eax, dword [edx + 0x30]
cmp ecx, 3
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x38]
mov dword [esp + 0x20], eax
jge 0x512663
cmp dword [esi + 0x78], ecx
jg 0x512636
push 0
push eax
push 0
mov edx, 0x4a
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x5126b8
mov edx, dword [esp + 0x20]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x4a
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
jmp 0x5126b0
mov edx, dword [ebp + 0x50]
add edx, 2
cmp dword [esi + 0x78], ecx
jg 0x512685
push eax
push edx
push dword [esp + 0x24]
mov edx, 0x5d
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x5126b8
mov edi, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x5d
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x5126d8
push 0
push ebx
push dword [esp + 0x24]
mov edx, 0x86
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512707
mov edx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x86
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], ebx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x30], 2
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x20]
jge 0x512789
xor edx, edx
cmp ecx, str.lead
mov ecx, dword [esi + 0x74]
sete dl
lea edx, [edx*2 - 1]
cmp dword [esi + 0x78], ecx
jg 0x51274e
push 0
push edx
push ebx
mov edx, 0x55
mov ecx, esi
call fcn.00499040
lea eax, [ebp + 0x50]
add esp, 0xc
mov dword [esp + 0x20], eax
jmp 0x512898
mov edi, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x55
mov dword [eax + ecx*4 + 4], ebx
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [ebp + 0x50]
mov dword [esp + 0x20], eax
jmp 0x512898
xor eax, eax
cmp ecx, str.lead
setne al
add eax, 0x6a
mov dword [esp + 0x2c], eax
mov al, byte [edi + 0x13]
test al, al
jne 0x5127aa
inc dword [edi + 0x2c]
mov edx, dword [edi + 0x2c]
jmp 0x5127b9
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov edx, dword [edi + eax*4 + 0x98]
mov eax, dword [ebp + 0x50]
mov ecx, dword [esi + 0x74]
inc eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x30], eax
cmp dword [esi + 0x78], ecx
jg 0x5127e8
push edx
push eax
push dword [esp + 0x24]
mov edx, 0x5d
mov ecx, esi
call fcn.00499040
mov edx, dword [esp + 0x2c]
add esp, 0xc
jmp 0x51281b
mov edx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x5d
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x51283a
push ebx
push ebx
push edx
mov edx, dword [esp + 0x38]
mov ecx, esi
call fcn.00499040
mov edx, dword [esp + 0x2c]
add esp, 0xc
jmp 0x512871
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov byte [eax + ecx*4], dl
xor edx, edx
mov word [eax + ecx*4 + 2], dx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], ebx
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea ecx, [ebp + 0x50]
mov dword [esp + 0x20], ecx
test edx, edx
je 0x512898
mov al, byte [edi + 0x13]
mov dword [esp + 0x20], ecx
cmp al, 8
jae 0x512898
movzx eax, al
mov dword [esp + 0x20], ecx
mov dword [edi + eax*4 + 0x98], edx
inc byte [edi + 0x13]
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x5128bb
mov edx, dword [esp + 0x28]
mov ecx, esi
push ebx
push edx
push dword [esp + 0x2c]
mov edx, 0x20
call fcn.00499040
add esp, 0xc
jmp 0x5128ea
mov edx, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x74]
mov edx, dword [ebp + 0x38]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
cmp dword [esi + 0x78], ecx
jg 0x512916
push edx
push eax
push dword [esp + 0x2c]
mov edx, 0x5d
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512949
mov edi, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x5d
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x28]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x512967
push edx
mov edx, esi
call fcn.00499860
add esp, 4
jmp 0x512970
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x74]
mov dword [ecx + edx*4], eax
mov edx, dword [esp + 0x18]
test ebx, ebx
je 0x51298c
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x51298c
movzx eax, al
mov dword [edi + eax*4 + 0x98], ebx
inc byte [edi + 0x13]
mov ebp, dword [ebp + 0x24]
test ebp, ebp
jne 0x512595
mov ebx, dword [esp + 0x34]
mov ecx, dword [esi + 0x74]
mov edx, dword [ebx + 0xc]
mov edi, dword [ebx + 0x10]
cmp dword [esi + 0x78], ecx
jg 0x512c38
push 0
push edx
push edi
mov edx, 0xc
mov ecx, esi
call fcn.00499040
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x3c]
dec dword [edi + 0x38]
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x28], eax
mov al, byte [edi + 0x13]
test al, al
jne 0x5129e8
inc dword [edi + 0x2c]
mov ebx, dword [edi + 0x2c]
jmp 0x5129f7
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov ebx, dword [edi + eax*4 + 0x98]
mov ecx, dword [esi + 0x74]
mov edx, dword [ebp + 0x38]
cmp dword [esi + 0x78], ecx
jg 0x512a18
push 0
push edx
push 0
mov edx, 0x4a
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512a4b
mov edi, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x4a
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x74]
cmp dword [eax + 0x20], 0x599b88
jne 0x512ad3
mov eax, dword [esp + 0x18]
mov edx, dword [ebp + 0x50]
inc edx
mov eax, dword [eax + 0x30]
mov dword [esp + 0x30], eax
cmp dword [esi + 0x78], ecx
jg 0x512a94
push ebx
push edx
push eax
mov edx, 0x5d
mov ecx, esi
call fcn.00499040
add esp, 0xc
mov edx, ebx
mov ecx, edi
push 2
call fcn.00510df0
add esp, 4
jmp 0x512b1d
mov edi, dword [esp + 0x30]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
push 2
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x18]
mov dword [eax + ecx*4 + 8], edx
mov edx, ebx
mov dword [eax + ecx*4], 0x5d
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, edi
call fcn.00510df0
add esp, 4
jmp 0x512b1d
cmp dword [esi + 0x78], ecx
jg 0x512aee
push 0
push ebx
push 1
mov edx, 0x47
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512b1d
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], ebx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
mov edx, dword [ebp + 0x40]
cmp dword [esi + 0x78], ecx
jg 0x512b3c
push ebx
push edx
push ebx
mov edx, 0x6a
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512b67
mov edi, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x6a
mov dword [eax + ecx*4 + 4], ebx
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp + 0x40]
mov ecx, dword [esi + 0x74]
inc edx
cmp dword [esi + 0x78], ecx
jg 0x512b8a
push ebx
push dword [esp + 0x2c]
mov ecx, esi
push edx
mov edx, 0x36
call fcn.00499040
add esp, 0xc
jmp 0x512bb9
mov edi, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4], 0x36
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x512bd9
push ebx
push 0
push dword [esp + 0x2c]
mov edx, 0x20
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512c08
mov edx, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
mov eax, dword [ebp + 0x50]
mov edx, dword [ebp + 0x38]
mov dword [esp + 0x30], eax
cmp dword [esi + 0x78], ecx
jg 0x512916
push edx
push eax
push dword [esp + 0x2c]
mov edx, 0x5d
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x512949
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edi
pop edi
mov dword [eax + ecx*4], 0xc
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret