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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 4]
cmp eax, dword [ecx + 8]
jbe 0x51f7c1
sub esp, 0x84
mov ecx, dword [esp + 0xac]
cmp ecx, 6
jg 0x51f47e
test ecx, ecx
jne 0x51f359
lea edi, [esp + 0x70]
lea esi, [esp + 0x94]
call fcn.00463e3e
nop
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
test ecx, 0x80000000
je 0x51f2eb
shl ecx, 1
mov edx, eax
shr eax, 0x1f
or eax, ecx
shl edx, 1
mov ecx, eax
shl eax, 1
shr edx, 0x1f
or edx, eax
shr ecx, 0x1f
add edx, 0xd7b17f80
adc ecx, 0xd
jmp 0x51f2f3
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
add edx, 0x886e0900
adc ecx, 0xfffffff1
mov eax, dword [esp + 0x88]
mov dword [esp], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 8], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], 0xa
call fcn.004abe20
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], edx
add esp, 0x84
ret
cmp ecx, 6
jne 0x51f584
mov edx, dword [esp + 0xa8]
cmp dword [edx], 0x58494e55
jne 0x51f6c8
cmp word [edx + 4], 0x534d
jne 0x51f6c8
lea edi, [esp + 0x5c]
lea esi, [esp + 0x94]
call fcn.00463e3e
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
test edx, 0x80000000
je 0x51f3c5
shl edx, 1
mov ebx, ecx
shr ecx, 0x1f
or ecx, edx
mov edx, ebx
shl ebx, 1
mov ebp, ecx
shl ecx, 1
shr ebx, 0x1f
or ebx, ecx
shr ebp, 0x1f
add ebx, 0xd7b17f80
adc ebp, 0xd
jmp 0x51f3cf
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x68]
mov edx, ecx
mov eax, ebx
mov ecx, 0x3b9aca00
mov ebx, edx
mul ecx
imul ecx, ebp, 0x3b9aca00
add ecx, edx
and ebx, 0x3fffffff
mov edx, ebx
sar ebx, 0x1f
add edx, eax
adc ecx, ebx
add edx, 0x3d1a0000
adc ecx, 0xa1b203eb
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xf4240
call fcn.0045cad0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x88]
mov dword [esp], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 8], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], 0xa
call fcn.004abe20
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ebx
add esp, 0x84
ret
cmp ecx, 8
jne 0x51f57f
mov edx, dword [esp + 0xa8]
cmp dword [edx], 0x58494e55
jne 0x51f6c8
cmp dword [edx + 4], 0x4f4e414e
jne 0x51f6c8
lea edi, [esp + 0x34]
lea esi, [esp + 0x94]
call fcn.00463e3e
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
test edx, 0x80000000
je 0x51f4eb
shl edx, 1
mov ebx, ecx
shr ecx, 0x1f
or ecx, edx
mov edx, ebx
shl ebx, 1
mov ebp, ecx
shl ecx, 1
shr ebx, 0x1f
or ebx, ecx
shr ebp, 0x1f
add ebx, 0xd7b17f80
adc ebp, 0xd
jmp 0x51f4f5
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x40]
mov edx, ecx
mov eax, ebx
mov ecx, 0x3b9aca00
mov ebx, edx
mul ecx
imul ecx, ebp, 0x3b9aca00
add ecx, edx
and ebx, 0x3fffffff
mov edx, ebx
sar ebx, 0x1f
add eax, edx
adc ecx, ebx
add eax, 0x3d1a0000
adc ecx, 0xa1b203eb
mov edx, dword [esp + 0x88]
mov dword [esp], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 8], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], 0xa
call fcn.004abe20
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ebx
add esp, 0x84
ret
cmp ecx, 9
je 0x51f590
mov edx, dword [esp + 0xa8]
jmp 0x51f6c8
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
lea ecx, [0x60c8b6]
mov dword [esp + 4], ecx
mov dword [esp + 8], 9
call fcn.00402a50
movzx eax, byte [esp + 0xc]
test al, al
je 0x51f6ba
lea edi, [esp + 0x48]
lea esi, [esp + 0x94]
call fcn.00463e3e
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
test edx, 0x80000000
je 0x51f602
shl edx, 1
mov ebx, ecx
shr ecx, 0x1f
or ecx, edx
mov edx, ebx
shl ebx, 1
mov ebp, ecx
shl ecx, 1
shr ebx, 0x1f
or ebx, ecx
shr ebp, 0x1f
add ebx, 0xd7b17f80
adc ebp, 0xd
jmp 0x51f60c
mov ebx, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
mov edx, ecx
mov eax, ebx
mov ecx, 0x3b9aca00
mov ebx, edx
mul ecx
imul ecx, ebp, 0x3b9aca00
add ecx, edx
and ebx, 0x3fffffff
mov edx, ebx
sar ebx, 0x1f
add eax, edx
adc ecx, ebx
add eax, 0x3d1a0000
adc ecx, 0xa1b203eb
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x3e8
call fcn.0045cad0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x88]
mov dword [esp], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 8], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], 0xa
call fcn.004abe20
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ebx
add esp, 0x84
ret
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x8c]
inc eax
mov ebx, dword [esp + 0x90]
cmp ebx, eax
jb 0x51f6e4
mov ebp, dword [esp + 0x88]
jmp 0x51f72d
mov ecx, dword [esp + 0x88]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x5e2160]
mov dword [esp + 0x10], eax
call fcn.0044a1f0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebp, eax
mov ebx, edx
mov edx, dword [esp + 0xa8]
mov eax, ecx
mov ecx, dword [esp + 0xac]
mov byte [eax + ebp - 1], 0x22
lea edi, [esp]
lea esi, [esp + 0x94]
call fcn.00463e3e
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0xac]
mov dword [esp + 0x24], eax
call fcn.0047e6c0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
inc edx
cmp eax, edx
jae 0x51f7a0
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
lea eax, [0x5e2160]
mov dword [esp + 0x10], eax
call fcn.0044a1f0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov byte [edx + ecx - 1], 0x22
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], eax
add esp, 0x84
ret
call fcn.00462320
jmp fcn.0051f270