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

Disassembly:
mov eax, 0x100cba13
call fcn.100bd27c
sub esp, 0xb8
push ebx
push ebp
mov ebp, dword [esp + 0xe8]
xor ebx, ebx
push esi
mov esi, dword [esp + 0xe8]
push edi
mov edi, ecx
mov dword [esp + 0x3c], edi
mov eax, dword [esi + 0x30]
mov edx, dword [esi + 8]
mov eax, dword [eax + ebp*4]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
lea eax, [edx + eax*8]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
lea eax, [esp + 0x44]
mov dword [esp + 0xd0], ebx
push eax
push ebp
mov ecx, esi
call fcn.1004c8df
cmp dword [esp + 0x48], 0x20
mov eax, dword [esi + 0x34]
movzx eax, byte [eax + ebp]
mov dword [esp + 0x5c], eax
jbe 0x100460eb
mov edi, 0x80004001
jmp 0x10046aee
lea ecx, [esp + 0x7c]
call fcn.10042f43
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], ebx
xor eax, eax
lea edx, [esp + 0x7c]
inc eax
lea ecx, [esp + 0x44]
mov byte [esp + 0xd0], al
call fcn.10045fa4
lea ecx, [esp + 0x7c]
call fcn.100435ab
test al, al
je 0x10046793
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x2c]
mov edx, dword [esi + 0x28]
movzx eax, byte [eax + ebp]
add eax, dword [ecx + ebp*4]
mov ecx, dword [edx + eax*8]
mov eax, dword [edx + eax*8 + 4]
xor edx, edx
inc edx
mov byte [esp + 0x17], dl
mov edx, dword [esp + 0xf4]
test edx, edx
je 0x10046185
cmp dword [edx + 4], eax
jb 0x1004616f
ja 0x10046165
cmp dword [edx], ecx
jbe 0x10046171
mov edi, 0x80004005
jmp 0x10046ad8
cmp dword [edx], ecx
jne 0x10046181
cmp dword [edx + 4], eax
jne 0x10046181
xor eax, eax
inc eax
mov byte [esp + 0x17], al
jmp 0x10046185
mov byte [esp + 0x17], bl
cmp byte [edi], 0
je 0x1004619e
lea edx, [edi + 4]
lea ecx, [esp + 0x7c]
call fcn.10045ea4
test al, al
jne 0x10046342
lea esi, [edi + 0x60]
mov ecx, dword [esi]
test ecx, ecx
je 0x100461af
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [esi], ebx
cmp byte [edi + 0x50], 0
push 0x84
je 0x100461e0
call fcn.10003645
pop ecx
test eax, eax
je 0x100461ce
push ebx
mov ecx, eax
call fcn.10045c3a
jmp 0x100461d0
mov eax, ebx
push eax
mov ecx, esi
mov dword [edi + 0x58], eax
call fcn.100093a0
mov eax, dword [edi + 0x58]
jmp 0x1004621a
call fcn.10003645
pop ecx
mov dword [esp + 0x40], eax
mov byte [esp + 0xd0], 2
test eax, eax
je 0x10046200
push ebx
mov ecx, eax
call fcn.10043022
jmp 0x10046202
mov eax, ebx
xor ecx, ecx
mov dword [edi + 0x54], eax
inc ecx
mov byte [esp + 0xd0], cl
mov ecx, esi
push eax
call fcn.100093a0
mov eax, dword [edi + 0x54]
test eax, eax
je 0x10046223
add eax, 4
jmp 0x10046225
mov eax, ebx
mov ecx, eax
mov dword [edi + 0x5c], eax
lea edx, [esp + 0x7c]
push edx
mov eax, dword [ecx]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x10046ad8
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x48], eax
jbe 0x10046315
mov esi, ebx
mov ebp, dword [esp + 0x44]
mov eax, dword [esi + ebp]
and eax, 0xffffff00
cmp eax, 0x40300
jne 0x1004626a
cmp dword [esi + ebp + 4], ebx
je 0x10046793
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov ecx, dword [esp + 0xdc]
lea eax, [esp + 0x60]
push eax
push dword [esi + ebp + 4]
xor dl, dl
mov byte [esp + 0xd8], 3
push dword [esi + ebp]
call fcn.10005bb4
xor ecx, ecx
mov edi, eax
inc ecx
test edi, edi
jne 0x100462b0
mov eax, dword [esi + ebp + 0x10]
cmp eax, ecx
jne 0x100462c5
cmp dword [esp + 0x60], edi
jne 0x100462d2
mov edi, 0x80004001
mov byte [esp + 0xd0], cl
lea ecx, [esp + 0x60]
call fcn.10005aa6
jmp 0x10046ad8
cmp dword [esp + 0x64], 0
je 0x100462ab
cmp dword [esp + 0x6c], eax
jne 0x100462ab
mov edi, dword [esp + 0x3c]
lea edx, [esp + 0x60]
push edx
mov ecx, dword [edi + 0x5c]
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
lea ecx, [esp + 0x60]
inc eax
mov byte [esp + 0xd0], al
call fcn.10005aa6
mov ecx, dword [esp + 0x18]
add esi, 0x18
inc ecx
mov dword [esp + 0x18], ecx
cmp ecx, dword [esp + 0x48]
jb 0x1004624d
mov ebp, dword [esp + 0xf0]
jmp 0x10046319
mov edi, dword [esp + 0x3c]
lea eax, [esp + 0x7c]
push eax
lea ecx, [edi + 4]
call fcn.1004338d
lea eax, [esp + 0xbc]
push eax
lea ecx, [edi + 0x44]
call fcn.100432c5
mov esi, dword [esp + 0xec]
xor eax, eax
inc eax
mov byte [edi], al
mov ecx, dword [edi + 0x5c]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x38], ebx
mov eax, dword [eax + ebp*4]
mov ebp, ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], ebp
cmp dword [esp + 0x48], ebp
jbe 0x100466f7
shl eax, 3
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], eax
mov ecx, dword [edi + 0x5c]
mov esi, dword [esp + 0x44]
push ebp
mov dword [esp + 0x2c], esi
mov eax, dword [ecx]
call dword [eax + 8]
mov ebp, dword [eax]
test ebp, ebp
jne 0x1004638d
mov ebp, dword [eax + 4]
mov dword [esp + 0x10], ebx
mov eax, dword [ebp]
lea ecx, [esp + 0x10]
push ecx
push 0x100d614c
push ebp
mov byte [esp + 0xdc], 4
call dword [eax]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x100463ea
mov edx, dword [esp + 0x20]
cmp dword [esi + edx + 0xc], 0xffffffff
ja 0x10046750
push dword [esi + edx + 0xc]
mov ecx, dword [eax]
push dword [esi + edx + 8]
push eax
call dword [ecx + 0xc]
mov edi, eax
mov eax, 0x80004001
cmp edi, 0x80070057
cmove edi, eax
mov eax, dword [esp + 0x10]
test edi, edi
jne 0x10046755
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], cl
test eax, eax
je 0x100463fe
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [esp + 0x114], 0
je 0x1004645b
mov dword [esp + 0x10], ebx
mov eax, dword [ebp]
lea ecx, [esp + 0x10]
push ecx
push 0x100d617c
push ebp
mov byte [esp + 0xdc], 5
call dword [eax]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10046447
push dword [esp + 0x118]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov edi, eax
test edi, edi
jne 0x10046761
mov eax, dword [esp + 0x10]
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], cl
test eax, eax
je 0x1004645b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x10], ebx
mov eax, dword [ebp]
lea ecx, [esp + 0x10]
push ecx
push 0x100d62bc
push ebp
mov byte [esp + 0xdc], 6
call dword [eax]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1004655d
mov ecx, dword [esp + 0x108]
xor edx, edx
inc edx
mov byte [ecx], dl
mov ecx, dword [esp + 0x104]
test ecx, ecx
je 0x10046750
mov dword [esp + 0x34], ebx
mov eax, dword [ecx]
lea edx, [esp + 0x34]
push edx
push ecx
mov byte [esp + 0xd8], 7
call dword [eax + 0xc]
mov edi, eax
test edi, edi
jne 0x10046740
mov eax, dword [esp + 0x10c]
xor ecx, ecx
mov esi, dword [esp + 0x110]
inc ecx
mov edi, ebx
mov byte [eax], cl
xor ecx, ecx
mov eax, dword [esi]
mov dword [esi + 4], ebx
mov word [eax], cx
cmp dword [esp + 0x34], ecx
je 0x100464f2
push dword [esp + 0x34]
mov ecx, esi
call fcn.10002026
mov edi, dword [esi + 4]
lea eax, [edi + edi]
push eax
call fcn.10003645
mov esi, eax
lea edx, [edi + edi]
pop ecx
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], edx
mov byte [esp + 0xd0], 8
mov ecx, ebx
test edi, edi
je 0x1004652e
mov eax, dword [esp + 0x34]
movzx eax, word [eax + ecx*2]
mov byte [esi + ecx*2], al
shr eax, 8
mov byte [esi + ecx*2 + 1], al
inc ecx
cmp ecx, edi
jb 0x10046517
mov eax, dword [esp + 0x10]
push edx
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
push esi
mov edi, eax
call fcn.1000366d
pop ecx
test edi, edi
jne 0x10046740
push dword [esp + 0x34]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x28]
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], cl
test eax, eax
je 0x10046571
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x10], ebx
mov eax, dword [ebp]
lea ecx, [esp + 0x10]
push ecx
push 0x100d619c
push ebp
mov byte [esp + 0xdc], 9
call dword [eax]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x100465b3
mov edx, dword [eax]
xor ecx, ecx
cmp byte [esp + 0x17], cl
setne cl
push ecx
push eax
call dword [edx + 0xc]
mov edi, eax
test edi, edi
jne 0x10046761
mov eax, dword [esp + 0x10]
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], cl
test eax, eax
je 0x100465c7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ebp, dword [esp + 0x20]
lea ecx, [esp + 0x18]
mov ebp, dword [esi + ebp + 0x10]
push ebp
mov dword [esp + 0x2c], ebp
call fcn.10045b98
push ebp
lea ecx, [esp + 0x28]
mov byte [esp + 0xd4], 0xa
call fcn.10045b6d
mov esi, dword [esp + 0x24]
mov edi, ebx
mov byte [esp + 0xd0], 0xb
test ebp, ebp
je 0x1004668a
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
push eax
lea ecx, [esp + 0x48]
call fcn.10046b17
mov edx, eax
test edx, edx
js 0x1004663b
mov eax, dword [esp + 0xec]
mov ecx, dword [eax + 0x28]
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + edx*8 + 4]
add eax, dword [esp + 0x40]
lea eax, [ecx + eax*8]
mov dword [esi + edi*4], eax
jmp 0x10046677
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x44]
push eax
call fcn.10046b3c
mov edx, eax
test edx, edx
js 0x10046782
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x2c]
mov ecx, dword [eax + edx*8 + 8]
sub ecx, dword [eax + edx*8]
mov eax, dword [eax + edx*8 + 0xc]
sbb eax, dword [esi + edx*8 + 4]
mov esi, dword [esp + 0x24]
mov dword [ebp], ecx
mov dword [ebp + 4], eax
mov dword [esi + edi*4], ebp
mov eax, dword [esp + 0x38]
inc edi
add ebp, 8
inc eax
mov dword [esp + 0x38], eax
cmp edi, dword [esp + 0x28]
jb 0x1004660d
mov eax, dword [esp + 0xf4]
mov ebp, dword [esp + 0x30]
test eax, eax
je 0x100466a6
cmp ebp, dword [esp + 0xa0]
jne 0x100466a6
mov edx, eax
jmp 0x100466b4
mov eax, dword [esp + 0xec]
mov edx, dword [eax + 0x28]
add edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
push esi
push edx
push ebp
mov ecx, dword [edi + 0x5c]
mov eax, dword [ecx]
call dword [eax + 0x14]
push esi
call fcn.1000366d
push dword [esp + 0x1c]
xor eax, eax
inc eax
mov byte [esp + 0xd8], al
call fcn.1000366d
add dword [esp + 0x24], 8
inc ebp
add dword [esp + 0x28], 0x18
pop ecx
pop ecx
mov dword [esp + 0x30], ebp
cmp ebp, dword [esp + 0x48]
jb 0x10046373
cmp dword [esp + 0xf8], 0
je 0x10046715
mov ecx, dword [edi + 0x5c]
cmp byte [esp + 0x17], 0
sete al
mov edx, dword [ecx]
movzx eax, al
push eax
call dword [edx + 0xc]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
push 0x30
mov byte [esp + 0xd4], 0xc
call fcn.10003645
pop ecx
test eax, eax
je 0x1004679d
mov ecx, eax
call fcn.10045c1d
mov ebp, eax
jmp 0x1004679f
push dword [esp + 0x34]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x10]
jmp 0x10046755
mov edi, 0x80004001
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], cl
jmp 0x1004676f
xor eax, eax
inc eax
mov byte [esp + 0xd0], al
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10046ad8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x10046ad8
push esi
call fcn.1000366d
push dword [esp + 0x1c]
call fcn.1000366d
pop ecx
pop ecx
mov edi, 0x80004001
jmp 0x10046ad8
mov ebp, ebx
mov dword [esp + 0x38], ebp
test ebp, ebp
je 0x100467ae
mov eax, dword [ebp]
push ebp
call dword [eax + 4]
mov eax, dword [esp + 0x58]
xor ecx, ecx
inc ecx
mov byte [esp + 0xd0], 0xd
mov byte [esp + 0x18], bl
cmp eax, ecx
jbe 0x10046829
mov esi, dword [esp + 0xe0]
lea eax, [ebp + 0x10]
push eax
mov eax, dword [esp + 0x30]
push ebx
mov edx, dword [esi]
mov ecx, dword [eax]
add ecx, dword [esp + 0xec]
mov eax, dword [eax + 4]
adc eax, dword [esp + 0xf0]
push eax
push ecx
push esi
call dword [edx + 0x10]
mov edi, eax
test edi, edi
jne 0x10046ab2
push esi
lea ecx, [ebp + 8]
call fcn.100093a0
mov edi, dword [esp + 0x3c]
mov ecx, dword [edi + 0x5c]
push dword [ecx + 0x60]
call fcn.100449ad
mov edx, dword [esp + 0x18]
test al, al
push 1
pop eax
movzx edx, dl
cmovne edx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], edx
mov ecx, ebx
mov dword [esp + 0x30], ecx
test eax, eax
je 0x100469b2
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x2c]
mov byte [esp + 0xd0], 0xe
mov edx, dword [edx + ecx*8]
add edx, dword [esp + 0xe4]
mov ecx, dword [esi + ecx*8 + 4]
adc ecx, dword [esp + 0xe8]
mov esi, dword [esp + 0xe0]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
cmp eax, 1
jne 0x10046894
mov eax, dword [esi]
push ebx
push ebx
push ecx
push edx
push esi
call dword [eax + 0x10]
mov edi, eax
test edi, edi
jne 0x10046ab2
push esi
lea ecx, [esp + 0x24]
call fcn.100093a0
jmp 0x10046913
cmp byte [edi + 0x50], 0
jne 0x100468db
cmp byte [esp + 0x18], 0
jne 0x100468db
push 0x20
call fcn.10003645
mov esi, eax
pop ecx
test esi, esi
je 0x100468bd
mov dword [esi + 4], ebx
mov dword [esi], 0x100d6454
mov dword [esi + 0x18], ebx
jmp 0x100468bf
mov esi, ebx
push esi
lea ecx, [esp + 0x24]
call fcn.100093a0
push dword [esp + 0x24]
mov ecx, esi
push dword [esp + 0x20]
push ebp
call fcn.10046b61
jmp 0x10046913
push 0x20
call fcn.10003645
mov esi, eax
pop ecx
test esi, esi
je 0x100468f7
mov dword [esi + 4], ebx
mov dword [esi], 0x100d6444
mov dword [esi + 0x18], ebx
jmp 0x100468f9
mov esi, ebx
push esi
lea ecx, [esp + 0x24]
call fcn.100093a0
push dword [esp + 0x24]
mov ecx, esi
push dword [esp + 0x20]
push ebp
call fcn.10046b61
push 0x28
call fcn.10003645
mov dword [esp + 0x20], eax
pop ecx
test eax, eax
je 0x10046931
mov dword [eax + 4], ebx
mov dword [eax], 0x100cf970
mov dword [eax + 8], ebx
jmp 0x10046937
mov eax, ebx
mov dword [esp + 0x1c], ebx
push eax
lea ecx, [esp + 0x74]
call fcn.10043558
mov ecx, eax
call fcn.100093a0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
add ecx, 8
push esi
call fcn.100093a0
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x2c]
mov byte [esp + 0xd0], 0xd
mov eax, dword [ecx + edx*8 + 8]
sub eax, dword [ecx + edx*8]
mov ecx, dword [ecx + edx*8 + 0xc]
sbb ecx, dword [edi + edx*8 + 4]
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], ecx
mov dword [edx + 0x18], ebx
mov dword [edx + 0x1c], ebx
mov byte [edx + 0x20], bl
test esi, esi
je 0x1004699d
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x58]
inc ecx
mov dword [esp + 0x30], ecx
cmp ecx, eax
jb 0x10046837
mov esi, dword [esp + 0x74]
lea ecx, [esp + 0x40]
push esi
mov dword [esp + 0x2c], esi
call fcn.10045b6d
test esi, esi
mov byte [esp + 0xd0], 0xf
mov esi, dword [esp + 0x40]
mov ecx, ebx
je 0x100469eb
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x70]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax]
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, edx
jb 0x100469da
cmp dword [esp + 0xf8], 0
je 0x10046a99
mov dword [esp + 0x24], ebx
mov edx, dword [esp + 0xfc]
mov byte [esp + 0xd0], 0x10
test edx, edx
je 0x10046a64
mov ecx, dword [edi + 0x5c]
push dword [ecx + 0x60]
call fcn.10044a34
test al, al
jne 0x10046a5d
push 0xc
call fcn.10003645
pop ecx
mov dword [esp + 0x18], eax
mov byte [esp + 0xd0], 0x11
test eax, eax
je 0x10046a47
push dword [esp + 0xfc]
mov ecx, eax
call fcn.10045bda
mov ebx, eax
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0xd4], 0x10
call fcn.100093a0
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0xfc]
mov ecx, dword [edi + 0x5c]
test ebx, ebx
mov eax, dword [esp + 0xf8]
cmovne edx, ebx
mov dword [esp + 0x28], eax
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x2c]
push edx
push esi
call dword [eax + 0x18]
mov byte [esp + 0xd0], 0xf
mov edi, eax
test ebx, ebx
je 0x10046aab
mov eax, dword [ebx]
push ebx
call dword [eax + 8]
jmp 0x10046aab
push dword [esp + 0x100]
mov ecx, dword [edi + 0x54]
push esi
call fcn.10044428
mov edi, eax
push esi
call fcn.1000366d
pop ecx
mov byte [esp + 0xd0], 0xc
test ebp, ebp
je 0x10046ac5
mov eax, dword [ebp]
push ebp
call dword [eax + 8]
xor eax, eax
lea ecx, [esp + 0x70]
inc eax
mov byte [esp + 0xd0], al
call fcn.1004311a
push dword [esp + 0xbc]
call fcn.1000366d
pop ecx
lea ecx, [esp + 0x7c]
call fcn.10043162
or dword [esp + 0xd0], 0xffffffff
lea ecx, [esp + 0x44]
call fcn.10045d98
mov ecx, dword [esp + 0xc8]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
leave
ret 0x40