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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x46f252
sub esp, 0x68
movzx edx, byte [esp + 0x7d]
test dl, dl
je 0x46f1ce
mov eax, 4
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
mov dword [ebx], edx
mov ebp, dword [esp + 0x74]
mov dword [ebx + 4], ebp
mov dword [ebx + 8], 0
movzx edi, byte [esp + 0x7c]
xchg edi, eax
mov byte [ebx + 0xc], al
xchg edi, eax
mov edi, dword [esp + 0x78]
mov ecx, edx
lea edx, [edi + 0x15c]
mov esi, edx
sar edx, 0x1f
shr edx, 0x1d
lea edx, [edi + edx + 0x15c]
cmp edi, 0xfffffea4
jge 0x46e9ec
mov byte [esp + 0x84], 0
add esp, 0x68
ret
sar edx, 3
cmp edx, 0x57
jge 0x46e9e0
mov dword [esp + 0x38], edx
shl edx, 3
sub esi, edx
cmp esi, 0x13
jge 0x46efcc
lea edx, [esi - 0x13]
neg edx
cmp edx, 0x14
jae 0x46f245
lea edi, [0x878400]
lea edx, [edi + edx*8]
mov edi, dword [edx + 4]
cmp ebp, edi
setb bl
cmp dword [edx], ecx
seta dl
cmp ebp, edi
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, edx
or ebp, ebx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x46efcc
mov edx, dword [esp + 0x6c]
mov ebx, dword [edx]
mov ebp, dword [edx + 4]
cmp esi, 0x14
jae 0x46f239
mov dword [esp + 0x64], ebx
lea edi, [0x878400]
lea edi, [edi + esi*8]
mov ecx, ebp
mov ebp, dword [edi]
mov esi, eax
mov eax, ebp
mul ebx
mov edi, dword [edi + 4]
mov ebx, dword [esp + 0x6c]
mov dword [ebx], eax
imul ebp, ecx
add edx, ebp
mov ebp, dword [esp + 0x64]
imul edi, ebp
add edx, edi
mov dword [ebx + 4], edx
test eax, eax
xchg ebp, ebx
sete bl
xchg ebp, ebx
test edx, edx
xchg edi, ebx
sete bl
xchg edi, ebx
and edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x46ee26
mov eax, dword [esp + 0x38]
cmp eax, 0x57
jae 0x46f1ef
mov dword [esp + 0x40], esi
shl eax, 4
lea ecx, [0x883d80]
mov edx, dword [ecx + eax + 8]
movzx ebp, byte [ecx + eax + 0xc]
mov esi, dword [ecx + eax + 4]
mov eax, dword [ecx + eax]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp + 0xc], edx
xchg ebp, eax
mov byte [esp + 0x10], al
xchg ebp, eax
call fcn.0046e900
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x46ee1f
lea edx, [eax + 1]
mov ebx, dword [esp + 0x6c]
mov ebp, dword [ebx + 4]
test ebp, ebp
xchg edi, ebx
sete bl
xchg edi, ebx
mov eax, ebx
mov ebx, dword [ebx]
test ebx, ebx
mov ecx, edx
sete dl
and edx, edi
test dl, dl
je 0x46ec89
xor edx, edx
cmp edx, 0x20
sbb ebx, ebx
lea ebp, [ecx + 4]
mov ecx, edx
shl ebp, cl
and ebp, ebx
mov edx, dword [esp + 0x80]
mov ebx, dword [edx + 8]
add ebx, 0xffffffc1
mov esi, dword [eax + 8]
cmp esi, ebx
jg 0x46ec7d
sub ebx, esi
sub ebx, dword [edx]
lea edx, [ebx + 0x40]
mov dword [esp + 0x40], ebp
cmp edx, 0x20
sbb ebx, ebx
mov ecx, edx
mov esi, 1
shl esi, cl
and ebx, esi
mov esi, ebx
add ebx, 0xffffffff
mov dword [esp + 0x64], ebx
lea edi, [ecx - 1]
cmp edi, 0x20
sbb ebx, ebx
mov ecx, edi
mov eax, 1
shl eax, cl
and eax, ebx
mov dword [esp + 0x3c], eax
sub eax, ebp
mov dword [esp + 0x60], eax
lea edi, [edx - 0x21]
mov dword [esp + 0x5c], edi
cmp edi, 0x20
sbb eax, eax
mov dword [esp + 0x58], eax
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x54], edi
cmp edi, 0x20
sbb ebx, ebx
mov dword [esp + 0x50], ebx
add edx, 0xffffffe0
mov dword [esp + 0x4c], edx
cmp edx, 0x20
sbb ebp, ebp
neg edx
cmp edx, 0x20
sbb eax, eax
mov ecx, dword [esp + 0x4c]
mov ebx, 1
shl ebx, cl
mov ecx, edx
mov edi, 1
shr edi, cl
and edi, eax
and ebp, ebx
or ebp, edi
add esi, 0xffffffff
adc ebp, 0xffffffff
mov ecx, dword [esp + 0x5c]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x54]
mov edx, 1
shr edx, cl
mov ebx, dword [esp + 0x50]
and edx, ebx
mov ebx, dword [esp + 0x58]
and ebx, eax
or ebx, edx
mov dword [esp + 0x5c], ebx
mov eax, dword [esp + 0x40]
mov edx, eax
sar eax, 0x1f
mov esi, dword [esp + 0x3c]
mov edi, esi
sub esi, edx
sbb ebx, eax
mov ecx, eax
mov eax, dword [esp + 0x6c]
and ebp, dword [eax + 4]
mov dword [esp + 0x34], ebp
cmp ebx, ebp
setl bl
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov esi, dword [esp + 0x64]
and esi, dword [eax]
mov eax, dword [esp + 0x60]
cmp eax, esi
setb al
and eax, ebp
or eax, ebx
test al, al
je 0x46ec65
add edi, edx
mov eax, dword [esp + 0x5c]
adc eax, ecx
mov ecx, dword [esp + 0x34]
cmp ecx, eax
setl al
sete cl
cmp esi, edi
setb dl
and edx, ecx
or edx, eax
test dl, dl
jne 0x46ec71
mov byte [esp + 0x84], 1
add esp, 0x68
ret
mov byte [esp + 0x84], 0
add esp, 0x68
ret
mov ebx, dword [edx]
lea edx, [ebx - 0x3f]
neg edx
jmp 0x46eb49
cmp ebp, 1
seta dl
xchg edi, ebx
sete bl
xchg edi, ebx
test ebx, ebx
mov esi, ebx
setae bl
nop
and ebx, edi
or ebx, edx
test bl, bl
je 0x46ee12
mov edx, ebp
xor ebx, ebx
mov edi, 0x20
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], edi
mov dword [esp + 0x64], edx
test ebx, ebx
seta dl
xchg edi, ebx
sete bl
xchg edi, ebx
cmp ebp, 0x10000
setae bl
and ebx, edi
or ebx, edx
test bl, bl
je 0x46ee03
shr ebp, 0x10
mov edx, dword [esp + 0x18]
mov ebx, edx
shl edx, 0x10
or edx, ebp
shr ebx, 0x10
mov ebp, dword [esp + 0x28]
add ebp, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], ebp
test ebx, ebx
xchg edi, ebx
seta bl
xchg edi, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
cmp edx, 0x100
setae bl
and ebx, ebp
or ebx, edi
test bl, bl
je 0x46edf4
shr edx, 8
mov ebx, dword [esp + 0x18]
mov ebp, ebx
shl ebx, 0x18
or ebx, edx
shr ebp, 8
mov edx, dword [esp + 0x28]
add edx, 8
test ebp, ebp
jne 0x46f1e1
cmp ebx, 0x100
jae 0x46f1d5
mov dword [esp + 0x48], ecx
mov dword [esp + 0x60], esi
lea ebp, [0x879540]
movzx ebx, byte [ebp + ebx]
mov dword [esp + 0x44], ebx
lea ebp, [edx + ebx - 0x40]
xchg ebp, ebx
neg ebx
xchg ebp, ebx
mov dword [esp + 0x20], ebp
cmp ebp, 0x20
sbb edi, edi
mov ecx, ebp
shl esi, cl
and esi, edi
mov dword [eax], esi
lea esi, [ecx - 0x20]
mov dword [esp + 0x5c], esi
cmp esi, 0x20
sbb ebx, ebx
mov dword [esp + 0x58], ebx
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb ebx, ebx
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x64]
shl ebx, cl
mov ecx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
shl ebp, cl
mov dword [esp + 0x64], ebp
mov ecx, esi
mov ebp, dword [esp + 0x60]
shr ebp, cl
and ebx, edi
mov esi, dword [esp + 0x54]
and ebp, esi
or ebp, ebx
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x58]
and ebx, esi
or ebx, ebp
mov dword [eax + 4], ebx
mov ebx, dword [eax + 8]
mov ebp, dword [esp + 0x44]
add ebp, edx
lea ebx, [ebx + ebp - 0x40]
mov dword [eax + 8], ebx
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x20]
jmp 0x46eb1c
mov ebx, edx
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
jmp 0x46ed3d
mov ebx, dword [esp + 0x18]
mov edx, ebp
mov ebp, dword [esp + 0x28]
jmp 0x46ecf8
mov edx, ebp
mov ebx, edx
mov ebp, esi
xor edi, edi
jmp 0x46ecb3
mov edx, eax
jmp 0x46eaf5
test eax, eax
xchg ebp, ebx
setae bl
xchg ebp, ebx
cmp edx, 1
xchg edi, ebx
sete bl
xchg edi, ebx
mov ecx, ebx
seta bl
nop
and edi, ebp
or edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
je 0x46efbf
mov ebx, edx
xor ebp, ebp
mov edi, 0x20
mov dword [esp + 0x64], ebx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x30], edi
test ebp, ebp
sete bl
xchg edi, ebx
seta bl
xchg edi, ebx
cmp edx, 0x10000
xchg ebp, ebx
setae bl
xchg ebp, ebx
and ebp, ebx
or ebp, edi
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x46efb0
shr edx, 0x10
mov ebx, dword [esp + 0x1c]
mov ebp, ebx
shl ebx, 0x10
or ebx, edx
shr ebp, 0x10
mov edx, dword [esp + 0x30]
add edx, 0x10
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x30], edx
test ebp, ebp
xchg edi, ebx
seta bl
xchg edi, ebx
cmp ebx, 0x100
setae dl
test ebp, ebp
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, edx
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x46efa1
shr ebx, 8
mov edx, dword [esp + 0x1c]
mov ebp, edx
shl edx, 0x18
or edx, ebx
shr ebp, 8
mov ebx, dword [esp + 0x30]
add ebx, 8
test ebp, ebp
jne 0x46f22b
cmp edx, 0x100
jae 0x46f21f
mov dword [esp + 0x60], eax
lea ebp, [0x879540]
movzx edx, byte [edx + ebp]
mov dword [esp + 0x48], edx
lea edi, [ebx + edx - 0x40]
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x24], edi
cmp edi, 0x20
sbb ebp, ebp
mov dword [esp + 0x5c], ebp
mov ecx, edi
shl eax, cl
and eax, ebp
mov edx, dword [esp + 0x6c]
mov dword [edx], eax
mov eax, edx
lea edx, [ecx - 0x20]
mov dword [esp + 0x58], edx
cmp edx, 0x20
sbb ebp, ebp
mov dword [esp + 0x54], ebp
neg edx
cmp edx, 0x20
sbb ebp, ebp
mov ecx, edx
mov edi, dword [esp + 0x60]
mov edx, edi
shr edi, cl
and edi, ebp
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x64]
shl ebp, cl
mov ecx, edx
mov edx, dword [esp + 0x5c]
and ebp, edx
or ebp, edi
mov edx, ecx
mov ecx, dword [esp + 0x58]
shl edx, cl
mov edi, dword [esp + 0x54]
and edx, edi
or edx, ebp
mov dword [eax + 4], edx
mov edx, dword [eax + 8]
mov ebp, dword [esp + 0x48]
add ebp, ebx
lea edx, [edx + ebp - 0x40]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x38]
cmp edx, 0x57
mov eax, edx
mov ebx, dword [esp + 0x6c]
jmp 0x46eaa9
mov ebp, dword [esp + 0x1c]
mov edx, ebx
mov ebx, dword [esp + 0x30]
jmp 0x46eeea
mov ebx, edx
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
jmp 0x46eea1
mov ebx, edx
mov edx, eax
mov ebp, ebx
xor edi, edi
jmp 0x46ee56
mov edx, dword [esp + 0x6c]
mov ebx, dword [edx + 4]
test ebx, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov edi, dword [edx]
test edi, edi
mov ecx, edx
sete dl
and ebp, edx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x46f042
cmp esi, 8
jae 0x46f1f9
mov dword [esp + 0x40], eax
shl esi, 4
lea eax, [0x877d40]
mov edx, dword [eax + esi + 8]
movzx ebx, byte [eax + esi + 0xc]
mov ebp, dword [eax + esi + 4]
mov eax, dword [eax + esi]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
mov byte [esp + 0x10], bl
call fcn.0046e900
mov eax, dword [esp + 0x40]
lea esi, [eax + 4]
mov eax, dword [esp + 0x38]
cmp eax, 0x57
mov ebx, dword [esp + 0x6c]
jmp 0x46eaa9
mov dword [esp + 0x64], ebx
test edi, edi
setae dl
cmp ebx, 1
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta bl
nop
and ebp, edx
or ebx, ebp
test bl, bl
je 0x46f1c1
xor edx, edx
mov ebx, dword [esp + 0x64]
mov ebp, 0x20
mov dword [esp + 0x14], edx
mov dword [esp + 0x60], edi
mov dword [esp + 0x2c], ebp
test edx, edx
xchg edi, ebx
seta bl
xchg edi, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
cmp ebx, 0x10000
setae dl
and edx, ebp
or edx, edi
test dl, dl
je 0x46f1b2
shr ebx, 0x10
mov edx, dword [esp + 0x14]
mov ebp, edx
shl edx, 0x10
or edx, ebx
shr ebp, 0x10
mov ebx, dword [esp + 0x2c]
add ebx, 0x10
mov dword [esp + 0x14], ebp
mov dword [esp + 0x2c], ebx
test ebp, ebp
xchg edi, ebx
seta bl
xchg edi, ebx
sete bl
cmp edx, 0x100
xchg ebp, ebx
setae bl
xchg ebp, ebx
and ebp, ebx
or ebp, edi
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x46f1a3
shr edx, 8
mov ebx, dword [esp + 0x14]
mov ebp, ebx
shl ebx, 0x18
or ebx, edx
shr ebp, 8
mov edx, dword [esp + 0x2c]
add edx, 8
test ebp, ebp
jne 0x46f211
cmp ebx, 0x100
jae 0x46f205
lea ebp, [0x879540]
movzx ebx, byte [ebx + ebp]
lea edx, [ebx + edx - 0x40]
mov dword [esp + 0x48], edx
neg edx
cmp edx, 0x20
sbb edi, edi
mov ecx, edx
mov ebp, dword [esp + 0x60]
shl ebp, cl
and ebp, edi
mov ebx, dword [esp + 0x6c]
mov dword [ebx], ebp
lea ebp, [ecx - 0x20]
mov dword [esp + 0x5c], ebp
cmp ebp, 0x20
sbb ebx, ebx
mov dword [esp + 0x58], ebx
xchg ebp, ebx
neg ebx
xchg ebp, ebx
cmp ebp, 0x20
sbb ebx, ebx
mov dword [esp + 0x54], ebx
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
shl ebx, cl
mov dword [esp + 0x5c], ebx
mov ecx, ebp
mov ebx, dword [esp + 0x60]
shr ebx, cl
mov ecx, edx
mov ebp, dword [esp + 0x64]
shl ebp, cl
and ebp, edi
mov edx, dword [esp + 0x54]
and ebx, edx
or ebx, ebp
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
and edx, ebp
or edx, ebx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x48]
mov dword [ecx + 8], edx
jmp 0x46efed
mov ebx, edx
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
jmp 0x46f100
mov edx, ebx
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x2c]
jmp 0x46f0b9
mov edx, dword [esp + 0x64]
mov ebx, edi
xor ebp, ebp
jmp 0x46f070
xor eax, eax
jmp 0x46e99b
mov eax, ebx
mov ecx, 0x100
call fcn.00450db0
mov esi, ebp
mov eax, ebx
mov ecx, 0x100
call fcn.00450e90
mov ecx, 0x57
call fcn.00450da0
mov eax, esi
mov ecx, 8
call fcn.00450da0
mov eax, ebx
mov ecx, 0x100
call fcn.00450db0
mov esi, ebp
mov eax, ebx
mov ecx, 0x100
call fcn.00450e90
mov eax, edx
mov ecx, 0x100
call fcn.00450db0
mov esi, ebp
mov eax, edx
mov ecx, 0x100
call fcn.00450e90
mov eax, esi
mov ecx, 0x14
call fcn.00450da0
mov eax, edx
mov ecx, 0x14
call fcn.00450da0
nop
call fcn.0044f4e0
jmp fcn.0046e970