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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006c41a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xf0
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x3c], edx
xor ebx, ebx
push edi
cmp dword [esi + 0x10], ebx
jne 0x100467bc
xor al, al
jmp 0x100471a0
mov dword [esp + 0x1c], 0xfffffff6
push 3
mov dword [esp + 0x3c], 0xaf9d66de
mov dword [esp + 0x20], 0xffffffe6
pop edi
jmp 0x10046959
push 1
lea ecx, [esp + 0x64]
call fcn.1000d911
mov dword [esp + 0x104], ebx
mov dword [esp + 0x6c], 0xfffffff7
mov dword [esp + 0xc], ebx
jmp 0x1004680f
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xe8], 0xd95e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x100467fc
mov dword [esp + 0xc], ebx
jmp 0x1004682c
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x60]
or dword [eax + ecx*4], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 1
jl 0x1004681c
mov eax, dword [esp + 0x60]
mov dword [eax], ebx
mov dword [esp + 0xc], 2
mov dword [esp + 0x14], 0xa6d0811
mov dword [esp + 0xc], edi
cmp dword [esp + 0xc], ebx
jl 0x10046929
mov dword [esp + 0x14], 0xd0e834ab
mov dword [esp + 0x14], 0xb69c93e3
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + eax*4 + 0xe8]
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xe8], ecx
test ecx, ecx
je 0x100468df
mov eax, dword [esp + 0x1c]
xor ecx, ecx
cmp eax, 0x5bc42206
mov eax, dword [esp + 0x60]
setg cl
mov edx, dword [eax]
mov eax, dword [esp + 0xc]
sub edx, ecx
mov ecx, dword [esp + eax*4 + 0xe8]
mov eax, dword [esp + 0x1c]
sub edx, eax
xor eax, eax
sub edx, 0xfff9
cmp edx, ecx
setg al
xor edx, edx
cmp eax, 0x3411
mov eax, dword [esp + 0x1c]
setl dl
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [esp + 0x14], ecx
xor ecx, ecx
mov eax, dword [esp + 0x14]
inc ecx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
jmp 0x100468e1
mov ecx, ebx
xor eax, eax
cmp ecx, 1
sete al
cmp eax, 0xffff
jb 0x10046905
cmp dword [esp + 0x38], ebx
jne 0x10046905
lea edx, [esp + 0x38]
lea ecx, [esp + 0x6c]
call fcn.10045611
jmp 0x1004691f
mov dword [esp + 0x14], 0x5b5cf0ad
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
neg eax
mov dword [esp + 0x14], eax
dec dword [esp + 0xc]
jns 0x10046857
mov eax, dword [esp + 0x60]
inc dword [eax]
cmp dword [eax], edi
jle 0x10046839
lea edx, [esp + 0x60]
lea ecx, [esp + 0x38]
call fcn.10045875
or dword [esp + 0x104], 0xffffffff
lea ecx, [esp + 0x60]
call fcn.1000e45c
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xfffffffe
jl 0x100467dc
mov byte [esp + 0x33], bl
lea ecx, [esp + 0x33]
call fcn.10045978
push 0xb6b
lea eax, [esp + 0x44]
push eax
push 0x3fc0
push ebx
call fcn.100471b5
add esp, 0x10
mov dword [esp + 0x10], 0xfffffff8
lea ecx, [esp + 0xb4]
push edi
call fcn.1000d911
xor eax, eax
lea ecx, [esp + 0x9c]
inc eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x14], ebx
push eax
call fcn.1000d911
lea edx, [esp + 0xb4]
mov byte [esp + 0x104], 2
lea ecx, [esp + 0x2c]
call fcn.10045e87
mov dword [esp + 0x2c], ebx
jmp 0x100469ea
mov eax, dword [esp + 0x2c]
mov dword [esp + eax*4 + 0xdc], 0x4cb8
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], edi
jl 0x100469d7
lea edx, [esp + 0x9c]
lea ecx, [esp + 0x2c]
call fcn.1004635f
call fcn.1004637e
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0x10]
mov dword [ecx + 4], eax
sub edx, dword [ecx + 4]
mov eax, dword [esp + 0x10]
add eax, edx
jne 0x10046a3b
cmp dword [esp + 0xe0], ebx
jne 0x10046a3b
mov eax, ebx
jmp 0x10046a3e
xor eax, eax
inc eax
mov dword [esp + 0x14], eax
xor edx, edx
mov ecx, dword [esp + 0xe4]
mov eax, dword [esp + 0x14]
cmp eax, ecx
mov eax, dword [esp + 0x9c]
setle dl
imul ecx, edx, 0xe80d
mov dword [eax], ecx
lea ecx, [esp + 0x9c]
call fcn.1000e45c
or dword [esp + 0x104], 0xffffffff
lea ecx, [esp + 0xb4]
call fcn.1000e45c
call fcn.1004639b
cmp dword [esi + 0x14], 0x10
jb 0x10046a92
mov ecx, dword [esi]
jmp 0x10046a94
mov ecx, esi
cmp dword [esi + 0x14], 0x10
mov dword [esp + 0x48], ecx
jb 0x10046aa2
mov edx, dword [esi]
jmp 0x10046aa4
mov edx, esi
mov eax, dword [esi + 0x10]
add eax, edx
cmp ecx, eax
je 0x1004719e
mov al, byte [ecx]
cmp al, 0x30
jl 0x10046dc2
cmp al, 0x39
jg 0x10046dc2
mov dword [esp + 0xc], 0x99c
lea ecx, [esp + 0x84]
push 1
call fcn.1000d911
mov dword [esp + 0x14], 0x50f82bae
mov dword [esp + 0x10], 0x9edca8fe
mov dword [esp + 0x80], 0xc2f5a260
mov dword [esp + 0x10], ebx
jmp 0x10046b10
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x84]
mov dword [eax + ecx*4], 0x6a927213
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 1
jl 0x10046afa
mov eax, dword [esp + 0xc]
xor edx, edx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x84]
mov dword [eax], ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
setle dl
xor ecx, ecx
add edx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, edx
setg cl
xor ebx, ebx
sub ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
setle bl
xor edx, edx
add ebx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ebx, eax
mov eax, dword [esp + 0xc]
setge dl
xor ecx, ecx
cmp edx, eax
setl cl
xor ebx, ebx
imul ecx, dword [esp + 0xc]
test ecx, ecx
je 0x10046bb7
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x10], ebx
jl 0x10046bc5
mov byte [esp + 0x1b], bl
cmp byte [esp + 0x1b], bl
je 0x10046baf
call fcn.10046586
dec dword [esp + 0x10]
jns 0x10046ba0
jmp 0x10046bc5
mov byte [esp + 0x1b], bl
cmp byte [esp + 0x1b], bl
jne 0x10046db7
lea edx, [esp + 0x80]
lea ecx, [esp + 0x84]
call fcn.10046596
call fcn.1000e45c
push 0x4e60
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x48]
push ebx
push eax
call fcn.10047536
mov dword [esp + 0x1c], 9
add esp, 0x10
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0xc], ebx
jmp 0x10046da2
mov dword [esp + 0x14], 0x2349
cmp dword [esp + 0x14], 0xe19
jge 0x10046c72
lea eax, [esp + 0x58]
mov ecx, 0x1065d1f0
push eax
call fcn.100435ba
push dword [esp + 0x5c]
mov ecx, dword [esp + 0x5c]
push dword [esp + 0x5c]
mov eax, dword [esp + 0x64]
add ecx, 1
adc eax, ebx
push eax
push ecx
call fcn.10057b70
push ebx
push 2
push edx
push eax
call fcn.1006abf0
push ebx
push 2
push edx
push eax
call fcn.1006aca0
push edx
push eax
mov ecx, 0x1065d138
call fcn.10016f7d
push eax
call fcn.10012040
pop ecx
mov dword [esp + 0x1c], 0xb7e80d68
mov dword [esp + 0x24], 0xc4779d44
mov dword [esp + 0x14], 0x997736e
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add eax, 0x7084bc9c
je 0x10046d03
mov eax, dword [esp + 0xc]
imul eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x1c]
jl 0x10046cb6
cmp dword [esp + 0x1c], ebx
jne 0x10046cb6
mov ecx, ebx
jmp 0x10046cb9
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
sub eax, 0xb0ce
je 0x10046d03
cmp dword [esp + 0x24], ebx
je 0x10046d03
xor eax, eax
inc eax
jmp 0x10046d05
mov eax, ebx
imul ecx, eax, 0x137d
add ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
neg ecx
sbb ecx, ecx
xor edx, edx
neg ecx
cmp ecx, eax
setg dl
sub edx, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp eax, edx
setl cl
sub ecx, dword [esp + 0xc]
je 0x10046d48
cmp dword [esp + 0x10], ebx
jne 0x10046dad
call fcn.1004659d
jmp 0x10046d91
mov dword [esp + 0x1c], 0xd296
mov dword [esp + 0x14], 0xfffffff8
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x1c], ebx
jne 0x10046d6e
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0x10]
add edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
cmp edx, eax
setl cl
mov dword [esp + 0x14], ecx
mov byte [esp + 0x2b], bl
lea ecx, [esp + 0x2b]
call fcn.100465c6
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xfffffffe
jl 0x10046c0e
mov ecx, dword [esp + 0x48]
inc ecx
jmp 0x10046a94
push 0x1579
call dword [sym.imp.KERNEL32.dll_ExitThread]
mov dword [esp + 0x10], 0xfffffff8
lea ecx, [esp + 0xa8]
push edi
call fcn.1000d911
mov dword [esp + 0x104], edi
lea ecx, [esp + 0xc0]
mov dword [esp + 0x14], ebx
push 1
call fcn.1000d911
lea edx, [esp + 0xa8]
mov byte [esp + 0x104], 4
lea ecx, [esp + 0x20]
call fcn.100465d4
mov dword [esp + 0x20], ebx
jmp 0x10046e21
mov eax, dword [esp + 0x20]
mov dword [esp + eax*4 + 0xd0], 0x4cb8
inc dword [esp + 0x20]
cmp dword [esp + 0x20], edi
jl 0x10046e0e
mov dword [esp + 0x20], ebx
jmp 0x10046e43
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xc0]
mov dword [eax + ecx*4], 0x589b5833
inc dword [esp + 0x20]
cmp dword [esp + 0x20], 1
jl 0x10046e2d
mov byte [esp + 0x1b], bl
mov dword [esp + 0x14], 0x138f
cmp dword [esp + 0x14], 0xdb0
jge 0x10046ff0
lea eax, [esp + 0x3c]
push eax
push 0x100077fc
call fcn.10051a9b
mov eax, dword [esp + 0x44]
pop ecx
pop ecx
test eax, eax
je 0x10046feb
mov dword [esp + 0x7c], 1
dec eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x34]
push eax
push 0x100077fc
call fcn.10051a9b
mov eax, dword [esp + 0x3c]
pop ecx
pop ecx
inc eax
lea ecx, [esp + 0x70]
push eax
call fcn.1000d911
xor edi, edi
mov byte [esp + 0x104], 5
mov eax, dword [esp + 0x34]
inc edi
mov ebx, dword [esp + 0x70]
cmp eax, edi
jl 0x10046ee1
lea esi, [ebx + 4]
push esi
push 0x100077fc
call fcn.10051a9b
mov eax, dword [esp + 0x3c]
inc edi
pop ecx
add esi, 4
pop ecx
cmp edi, eax
jle 0x10046ec8
and dword [esp + 0x4c], 0
lea ecx, [esp + 0x7c]
and dword [esp + 0x50], 0
inc eax
and dword [esp + 0x54], 0
push ecx
push eax
lea ecx, [esp + 0x54]
call fcn.1000e38d
mov edx, dword [esp + 0x34]
xor ecx, ecx
mov esi, dword [esp + 0x4c]
xor eax, eax
inc eax
inc ecx
mov dword [esp + 0x1c], eax
cmp edx, ecx
jl 0x10046f94
lea edi, [esi + 4]
lea eax, [esi + 8]
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], eax
lea eax, [ecx + ecx]
mov dword [esp + 0xc], eax
cmp eax, edx
jg 0x10046f7f
mov edi, dword [esp + 0x24]
sub ebx, esi
mov dword [esp + 0x44], ebx
mov ebx, eax
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + esi]
cmp eax, dword [esi + edi]
jge 0x10046f6a
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [eax]
inc eax
cmp dword [edi], eax
cmovg eax, dword [edi]
cmp edx, eax
mov dword [edi], eax
cmovle edx, eax
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x34]
add ebx, ecx
lea edi, [edi + ecx*4]
cmp ebx, edx
jle 0x10046f3f
mov esi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x14]
add dword [esp + 0x24], 8
inc ecx
add edi, 4
mov dword [esp + 0x14], edi
cmp ecx, edx
jle 0x10046f24
mov eax, dword [esp + 0x1c]
push eax
push 0x10007828
call fcn.1005218c
pop ecx
pop ecx
test esi, esi
je 0x10046fba
push esi
call fcn.10052328
xor eax, eax
pop ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov byte [esp + 0x104], 4
test ebx, ebx
je 0x10046fdd
push ebx
call fcn.10052328
xor ebx, ebx
pop ecx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
jmp 0x10046fdf
xor ebx, ebx
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x10046e89
dec eax
mov dword [esp + 0x3c], eax
cmp byte [esp + 0x1b], 0
je 0x10046ffc
call fcn.100465f3
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x10]
mov dword [ecx + 4], eax
sub edx, dword [ecx + 4]
mov eax, dword [esp + 0x10]
add eax, edx
jne 0x10047032
cmp dword [esp + 0xd4], ebx
jne 0x10047032
mov eax, ebx
jmp 0x10047035
xor eax, eax
inc eax
mov dword [esp + 0x14], eax
xor edx, edx
mov ecx, dword [esp + 0xd8]
mov eax, dword [esp + 0x14]
cmp eax, ecx
mov eax, dword [esp + 0xc0]
setle dl
imul ecx, edx, 0xe80d
mov dword [eax], ecx
lea ecx, [esp + 0xc0]
call fcn.1000e45c
or dword [esp + 0x104], 0xffffffff
lea ecx, [esp + 0xa8]
call fcn.1000e45c
lea ecx, [esp + 0x40]
call fcn.100465ff
mov dword [esp + 0xc], 0x99c
lea ecx, [esp + 0x90]
push 1
call fcn.1000d911
mov dword [esp + 0x104], 6
lea edx, [esp + 0x90]
mov dword [esp + 0x14], 0x50f82bae
lea ecx, [esp + 0xcc]
mov dword [esp + 0x10], 0x9edca8fe
mov dword [esp + 0x44], 0xc2f5a260
call fcn.10046605
mov eax, dword [esp + 0xc]
xor edx, edx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x90]
mov dword [eax], ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
setle dl
xor ecx, ecx
add edx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, edx
setg cl
xor ebx, ebx
sub ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ecx, eax
setle bl
xor edx, edx
add ebx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp ebx, eax
mov eax, dword [esp + 0xc]
setge dl
xor ecx, ecx
cmp edx, eax
setl cl
imul ecx, dword [esp + 0xc]
test ecx, ecx
je 0x1004718d
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0
jl 0x1004716f
mov byte [esp + 0x32], 0
lea ecx, [esp + 0x32]
call fcn.10046763
dec dword [esp + 0x10]
jns 0x1004715b
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x90]
mov dword [eax], ecx
lea ecx, [esp + 0x90]
call fcn.1000e45c
jmp 0x100467b5
mov byte [esp + 0x1b], 0
cmp byte [esp + 0x1b], 0
je 0x1004716f
call fcn.10046778
mov al, 1
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret