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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff78
mov dword [esp + 4], ecx
mov byte [esp], dl
mov ebx, eax
xor eax, eax
mov dword [esp + 0x40], eax
mov edi, dword [ebx + 0xd8]
xor esi, esi
jmp 0x51f074
cmp byte [ebx + 0x195], 0
je 0x51ea7f
cmp byte [ebx + 0x196], 0
jne 0x51ea7f
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
cmp dword [edx + eax*4 + 0x1c], 2
jl 0x51f08d
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
cmp byte [edx + eax*4 + 0x21], 0
je 0x51ea9c
inc esi
jmp 0x51f074
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
cmp dword [edx + eax*4 + 0xc], 0
jne 0x51eabc
cmp dword [edx + eax*4 + 8], 0
jae 0x51ead9
jmp 0x51eabe
jge 0x51ead9
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
mov byte [edx + eax*4 + 0x21], 1
inc esi
jmp 0x51f074
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
push dword [edx + eax*4 + 0xc]
push dword [edx + eax*4 + 8]
push 0
push 0
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [ebx]
mov ecx, dword [eax + 0x14e0]
mov edx, edi
mov eax, dword [ebx]
call fcn.0048af48
mov eax, dword [ebx]
mov edx, dword [eax + 0x14e0]
mov eax, edi
call fcn.004b8d1c
test al, al
jne 0x51eb39
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
mov byte [edx + eax*4 + 0x21], 1
inc esi
jmp 0x51f074
cmp byte [edi + 0xd], 0x80
ja 0x51eb49
movzx eax, byte [edi + 0xd]
mov dword [esp + 0x28], eax
jmp 0x51eb5f
movzx eax, byte [edi + 0xd]
mov ecx, pe_nt_image_headers32
sub ecx, eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x28], eax
movzx ebp, word [edi + 0xb]
imul ebp, dword [esp + 0x28]
test ebp, ebp
jne 0x51eb71
mov ebp, 0x1000
mov eax, dword [edi + 0x30]
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x34]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x14], eax
lea eax, [edi + 0x40]
test byte [eax], 0x80
je 0x51ebd4
lea eax, [edi + 0x40]
movzx eax, byte [eax]
and al, 0x7f
movzx eax, al
mov ecx, 0x80
sub ecx, eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x38], eax
jmp 0x51ebfc
lea eax, [edi + 0x40]
cmp dword [eax], 0
jle 0x51ebf4
lea eax, [edi + 0x40]
cmp dword [eax], 0x100
jg 0x51ebf4
lea eax, [edi + 0x40]
mov eax, dword [eax]
imul ebp
mov dword [esp + 0x38], eax
jmp 0x51ebfc
mov dword [esp + 0x38], 0x400
cmp dword [esp + 0x38], 0x10000
ja 0x51ec1d
cmp dword [esp + 0x38], 0x200
jb 0x51ec1d
mov eax, dword [esp + 0x38]
call fcn.00411328
test al, al
jne 0x51ec25
mov dword [esp + 0x38], 0x400
movzx eax, word [edi + 0xb]
mov edx, eax
shl eax, 4
add eax, edx
add eax, 0x13
mov ecx, 0x14
xor edx, edx
div ecx
xor edx, edx
push edx
push eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
call fcn.00405158
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
call fcn.00405158
push edx
push eax
mov eax, dword [esp + 0x40]
shl eax, 5
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
cmp edx, dword [esp + 0x34]
jne 0x51ec99
cmp eax, dword [esp + 0x30]
jbe 0x51eccb
jmp 0x51ec9b
jle 0x51eccb
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
call fcn.00405158
push edx
push eax
mov eax, dword [esp + 0x40]
shl eax, 5
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
call fcn.00405158
push edx
push eax
mov eax, dword [esp + 0x40]
add eax, eax
add eax, eax
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
cmp edx, dword [esp + 0x34]
jne 0x51ed02
cmp eax, dword [esp + 0x30]
jbe 0x51ed35
jmp 0x51ed04
jle 0x51ed35
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
call fcn.00405158
push edx
push eax
mov eax, dword [esp + 0x40]
add eax, eax
add eax, eax
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
cmp byte [esp], 0
je 0x51ed6c
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
push dword [edx + eax*4 + 0xc]
push dword [edx + eax*4 + 8]
push dword [esp + 0x3c]
push dword [esp + 0x3c]
mov eax, ebx
call fcn.0051e9e4
test al, al
jne 0x51ed6c
inc esi
jmp 0x51f074
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
mov byte [edx + eax*4 + 0x21], 1
cmp dword [esp + 0x14], 0
jne 0x51ed95
cmp dword [esp + 0x10], 0
jb 0x51ee70
jmp 0x51ed9b
jl 0x51ee70
cmp dword [ebx + 0x1ac], 0
jne 0x51edaf
cmp dword [ebx + 0x1a8], 0
jae 0x51ee16
jmp 0x51edb1
jge 0x51ee16
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x3c], 0
jbe 0x51ede4
mov eax, ebp
sub eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
push edx
push eax
mov eax, dword [esp + 0x4c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
jmp 0x51ee50
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
call fcn.00405210
mov dword [esp + 0x3c], eax
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
call fcn.0040517c
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp edx, dword [esp + 0x74]
jne 0x51ee67
cmp eax, dword [esp + 0x70]
setb al
jmp 0x51ee6a
setl al
mov byte [esp + 0x78], al
jmp 0x51ee75
mov byte [esp + 0x78], 0
cmp byte [esp + 0x78], 0
je 0x51eece
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
call fcn.00405158
push edx
push eax
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
lea eax, [edx + eax*4 + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x60]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x24], eax
jmp 0x51eede
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
cmp dword [esp + 0xc], 0
jne 0x51eef2
cmp dword [esp + 8], 0
jb 0x51f046
jmp 0x51eef8
jl 0x51f046
cmp dword [ebx + 0x1ac], 0
jne 0x51ef0c
cmp dword [ebx + 0x1a8], 0
jae 0x51ef79
jmp 0x51ef0e
jge 0x51ef79
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x3c], 0
jbe 0x51ef41
mov eax, ebp
sub eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
push edx
push eax
mov eax, dword [esp + 0x4c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], edx
jmp 0x51efb9
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
call fcn.00405210
mov dword [esp + 0x3c], eax
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
call fcn.0040517c
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], edx
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
cmp edx, dword [esp + 0x84]
jne 0x51efd5
cmp eax, dword [esp + 0x80]
jae 0x51f046
jmp 0x51efd7
jge 0x51f046
mov eax, ebp
xor edx, edx
push edx
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
call fcn.00405158
push edx
push eax
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
sub eax, esi
mov edx, dword [ebx + 0x19c]
lea eax, [edx + eax*4 + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x1c], eax
push dword [esp + 0x1c]
push dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
push eax
lea eax, [esp + 0x4c]
push eax
mov cl, 1
mov edx, dword [esp + 0x48]
mov eax, ebx
call fcn.0051e954
cmp dword [esp + 0x24], 0xffffffff
jne 0x51f052
cmp dword [esp + 0x20], 0xffffffff
je 0x51f073
push dword [esp + 0x24]
push dword [esp + 0x24]
mov eax, dword [esp + 0xc]
push eax
lea eax, [esp + 0x4c]
push eax
xor ecx, ecx
mov edx, dword [esp + 0x48]
mov eax, ebx
call fcn.0051e954
inc esi
mov eax, dword [ebx + 0x19c]
cmp esi, dword [eax + 4]
jge 0x51f08d
mov eax, dword [ebx + 0x19c]
cmp esi, dword [eax]
jl 0x51ea52
cmp dword [esp + 0x40], 0
je 0x51f09d
lea eax, [esp + 0x40]
call fcn.00443f78
add esp, 0x88
pop ebp
pop edi
pop esi
pop ebx
ret