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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b2710
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x5fa040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
test eax, eax
je 0x51eac8
mov dword [eax], 0
mov edi, dword [esi + 0x14]
mov edx, dword [esi + 0x24]
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
cmp edi, edx
ja 0x51eff1
jb 0x51eae6
cmp ecx, eax
jae 0x51eff1
sub eax, ecx
sbb edx, edi
xor ebx, ebx
cmp ebx, edx
jb 0x51eb00
ja 0x51eaf9
mov edx, dword [ebp + 0x10]
cmp edx, eax
jbe 0x51eb03
mov edx, eax
mov dword [ebp + 0x10], edx
jmp 0x51eb03
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x51eff1
mov dword [ebp - 0x10], ebx
mov ebx, dword [esi + 0x64]
mov eax, ebx
shr eax, 1
je 0x51eb49
lea edx, [esi + 0x60]
mov esi, dword [edx]
mov dword [ebp - 0x20], edx
nop
mov edx, dword [esi + eax*4]
cmp edi, dword [edx + 0x3c]
ja 0x51eb36
jb 0x51eb2f
cmp ecx, dword [edx + 0x38]
jae 0x51eb36
mov edx, dword [ebp - 0x10]
mov ebx, eax
jmp 0x51eb3b
mov edx, eax
mov dword [ebp - 0x10], edx
lea eax, [ebx + edx]
shr eax, 1
cmp eax, edx
jne 0x51eb20
mov eax, dword [ebp - 0x20]
jmp 0x51eb4c
lea eax, [esi + 0x60]
mov eax, dword [eax]
mov ebx, dword [ebp - 0x10]
mov ebx, dword [eax + ebx*4]
mov dword [ebp - 0x28], ebx
sub ecx, dword [ebx + 0x38]
mov esi, dword [ebx + 0x44]
sbb edi, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x18], esi
cmp edi, esi
ja 0x51f07b
jb 0x51eb78
cmp ecx, eax
jae 0x51f07b
sub eax, ecx
sbb dword [ebp - 0x18], edi
xor edx, edx
cmp edx, dword [ebp - 0x18]
mov edx, dword [ebp + 0x10]
jb 0x51eb92
ja 0x51eb8d
cmp edx, eax
jbe 0x51eb92
mov edx, eax
mov dword [ebp + 0x10], edx
mov esi, dword [ebx + 0x34]
cmp edi, esi
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0x18], esi
mov esi, dword [ebp + 8]
jb 0x51ebc5
ja 0x51eba8
cmp ecx, eax
jb 0x51ebc5
mov byte [esi + 0xa], 1
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
sub eax, ecx
sbb dword [ebp - 0x18], edi
xor esi, esi
cmp esi, dword [ebp - 0x18]
mov esi, dword [ebp + 8]
jb 0x51ebdf
ja 0x51ebda
cmp edx, eax
jbe 0x51ebdf
mov edx, eax
mov dword [ebp + 0x10], edx
cmp byte [ebx + 4], 0
jne 0x51f007
cmp byte [ebx], 0
je 0x51f007
cmp dword [ebx + 0x1c], 0
je 0x51f007
cmp byte [ebx + 3], 0
jne 0x51f00d
cmp byte [ebx + 5], 0
je 0x51ec93
add ecx, dword [ebx + 0x48]
mov eax, dword [ebx + 0x4c]
adc eax, edi
cmp ecx, dword [ebx + 0x20]
jne 0x51ec22
cmp eax, dword [ebx + 0x24]
je 0x51ec33
push eax
push ecx
mov ecx, ebx
call fcn.0051e920
test eax, eax
jne 0x51eff3
mov ecx, dword [ebx + 0x1c]
lea edx, [ebp + 8]
push edx
mov edx, dword [ebp + 0x10]
push edx
push dword [ebp + 0xc]
mov dword [ebp + 8], 0
mov eax, dword [ecx]
push ecx
call dword [eax + 0xc]
mov edx, dword [ebp + 8]
mov edi, eax
test edi, edi
jne 0x51ec5f
test edx, edx
jne 0x51ec5f
mov byte [esi + 8], 1
add dword [ebx + 0x20], edx
mov ecx, edx
adc dword [ebx + 0x24], 0
add dword [esi + 0x10], ecx
mov eax, dword [esi + 0x14]
adc eax, 0
mov dword [esi + 0x14], eax
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x51ec7d
mov dword [eax], edx
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [esi + 0x38]
mov dword [ebp + 8], eax
nop dword [eax]
mov edi, dword [esi + 0x10]
sub edi, dword [ebx + 0x38]
mov edx, dword [esi + 0x14]
mov eax, edi
mov ecx, dword [ebx + 8]
sbb edx, dword [ebx + 0x3c]
mov dword [ebp - 0x1c], ecx
call fcn.005a80a0
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edx, 1
shl edx, cl
mov dword [ebp - 0x14], eax
mov ecx, edx
mov dword [ebp - 0x24], edx
lea eax, [edx - 1]
mov edx, dword [ebp - 0x14]
and eax, edi
sub ecx, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp + 0x10], ecx
mov eax, dword [ebp - 0x10]
cmovbe ecx, dword [ebp + 0x10]
mov edi, ecx
mov dword [ebp + 0x10], edi
cmp eax, dword [esi + 0x40]
jne 0x51ed02
mov eax, dword [ebp + 8]
cmp edx, dword [eax]
jne 0x51ed02
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [eax + 4]
je 0x51ef61
mov eax, dword [ebp - 0x18]
mov ecx, edx
shrd ecx, eax, 9
shr eax, 9
test eax, eax
ja 0x51efcd
jb 0x51ed21
cmp ecx, dword [ebx + 0x14]
jae 0x51efcd
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + ecx*4]
cmp dword [eax + 4], 0
je 0x51efcd
mov eax, dword [eax]
mov ecx, edx
and ecx, 0x1ff
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x51efcd
cmp eax, dword [ebx + 0xc]
je 0x51efcd
mov edx, dword [ebx + 0x20]
xor ecx, ecx
shld ecx, eax, 9
shl eax, 9
cmp byte [ebx + 2], 0
je 0x51ef73
cmp eax, edx
jne 0x51ed6e
cmp ecx, dword [ebx + 0x24]
je 0x51ed7f
push ecx
push eax
mov ecx, ebx
call fcn.0051e920
test eax, eax
jne 0x51eff3
mov edx, dword [esi + 0x4c]
lea eax, [ebp + 8]
mov ecx, dword [ebx + 0x1c]
push eax
mov dword [ebp + 8], 0x200
call fcn.00558f10
mov ecx, dword [ebp + 8]
add esp, 4
add dword [ebx + 0x20], ecx
adc dword [ebx + 0x24], 0
test eax, eax
jne 0x51eff3
cmp ecx, 0x200
jne 0x51ebac
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov edi, dword [esi + 0x4c]
lea ecx, [ecx - 9]
call fcn.005a8080
cmp dword [edi], eax
jne 0x51ebac
cmp dword [edi + 4], edx
jne 0x51ebac
mov eax, dword [edi + 8]
mov dword [ebp - 0x1c], eax
cmp eax, 0x80000000
ja 0x51ebac
add eax, 0xc
cmp eax, 0x200
jbe 0x51ee4a
add eax, 0x1ff
and eax, 0xfffffe00
cmp eax, dword [esi + 0x50]
ja 0x51ebac
mov ecx, dword [ebx + 0x1c]
lea edx, [edi + 0x200]
add eax, 0xfffffe00
mov dword [ebp - 0x20], eax
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
push eax
call fcn.00558f10
mov edi, dword [ebp + 8]
xor edx, edx
add esp, 4
mov ecx, edi
add dword [ebx + 0x20], ecx
adc edx, dword [ebx + 0x24]
mov dword [ebx + 0x24], edx
test eax, eax
jne 0x51eff3
cmp edi, dword [ebp - 0x20]
jne 0x51ebac
mov edi, dword [esi + 0x6c]
mov eax, dword [esi + 0x4c]
add eax, 0xc
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x18], eax
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0
mov ecx, dword [edi + 0x1c]
test ecx, ecx
je 0x51ee77
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [edi + 0x1c], 0
lea ebx, [esi + 0x38]
mov edi, dword [ebp - 0x24]
mov dword [ebp + 8], ebx
mov dword [ebx], 0xffffffff
mov dword [ebx + 4], 0xffffffff
mov dword [esi + 0x40], 0xffffffff
cmp dword [esi + 0x48], edi
jb 0x51f07b
mov ecx, dword [esi + 0x74]
lea edx, [ebp - 0x30]
mov eax, dword [esi + 0x44]
push 0
push edx
mov dword [ecx + 8], eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 0xc], edi
mov ecx, dword [esi + 0x80]
push 0
push dword [esi + 0x78]
mov dword [ebp - 0x30], edi
push dword [esi + 0x70]
mov dword [ebp - 0x2c], 0
mov eax, dword [ecx]
push ecx
call dword [eax + 0xc]
mov ecx, dword [esi + 0x74]
mov dword [ebp - 0x20], eax
cmp dword [ecx + 0x10], edi
jne 0x51ef29
mov eax, dword [esi + 0x7c]
mov ecx, 0x20
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
cdq
sub ecx, dword [edi + 0x48]
mov ebx, dword [edi + 0x50]
sub ebx, dword [edi + 0x58]
shr ecx, 3
sub ebx, ecx
mov ecx, 0
sbb ecx, ecx
add ebx, dword [edi + 0x70]
adc ecx, 0
add ebx, eax
adc ecx, edx
add ebx, dword [edi + 0x60]
adc ecx, dword [edi + 0x64]
cmp ebx, dword [ebp - 0x1c]
jne 0x51ef23
test ecx, ecx
je 0x51ef3a
mov eax, dword [ebp - 0x20]
lea ebx, [esi + 0x38]
mov byte [esi + 0xa], 1
mov dword [ebp + 8], ebx
test eax, eax
je 0x51ebac
jmp 0x51ef40
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x20]
test eax, eax
jne 0x51eff3
mov eax, dword [ebp - 0x14]
mov dword [ebx], eax
mov eax, dword [ebp - 0x18]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x28]
mov dword [esi + 0x40], eax
jmp 0x51eca0
mov eax, dword [esi + 0x44]
add eax, dword [ebp - 0x20]
push edi
push eax
push dword [ebp + 0xc]
call fcn.0058aed0
jmp 0x51efd8
add eax, dword [ebp - 0x20]
adc ecx, 0
cmp eax, edx
jne 0x51ef82
cmp ecx, dword [ebx + 0x24]
je 0x51ef8f
push ecx
push eax
mov ecx, ebx
call fcn.0051e920
test eax, eax
jne 0x51eff3
mov ecx, dword [ebx + 0x1c]
lea edx, [ebp + 0x10]
push edx
push edi
push dword [ebp + 0xc]
mov dword [ebp + 0x10], 0
mov eax, dword [ecx]
push ecx
call dword [eax + 0xc]
mov edx, dword [ebp + 0x10]
mov edi, eax
test edi, edi
jne 0x51efb8
test edx, edx
jne 0x51efb8
mov byte [esi + 8], 1
mov ecx, edx
mov eax, 0
add dword [ebx + 0x20], ecx
adc eax, dword [ebx + 0x24]
mov dword [ebx + 0x24], eax
jmp 0x51ec68
push edi
push 0
push dword [ebp + 0xc]
call fcn.0058ad30
mov eax, edi
xor ecx, ecx
add esp, 0xc
add dword [esi + 0x10], eax
mov eax, dword [ebp + 0x14]
adc ecx, dword [esi + 0x14]
mov dword [esi + 0x14], ecx
test eax, eax
je 0x51eff1
mov dword [eax], edi
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp byte [ebx + 3], 0
je 0x51f02a
mov byte [esi + 9], 1
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp byte [ebx], 0
je 0x51f05e
cmp dword [ebx + 0x1c], 0
je 0x51f05e
push edx
push 0
push dword [ebp + 0xc]
call fcn.0058ad30
mov edx, dword [ebp + 0x10]
xor ecx, ecx
mov eax, edx
add esp, 0xc
add dword [esi + 0x10], eax
mov eax, dword [ebp + 0x14]
adc ecx, dword [esi + 0x14]
mov dword [esi + 0x14], ecx
test eax, eax
je 0x51eff1
mov dword [eax], edx
jmp 0x51eff1
mov byte [esi + 8], 1
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, 0x80004005
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10