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

Disassembly:
sub esp, 0x64
push ebx
push ebp
mov ebp, ecx
xor ecx, ecx
mov eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x78]
movzx eax, word [eax]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x8c]
push esi
push edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x54], ecx
test eax, eax
jne 0x1009f7db
mov ebx, dword [esp + 0x7c]
lea esi, [ebp + 8]
mov dword [esp + 0x28], esi
cmp ebx, dword [esi + 4]
ja 0x1013dabd
mov edi, dword [esi]
add edi, ebx
mov dl, byte [edi]
xor ecx, ecx
inc ecx
mov al, dl
shr al, 3
and al, cl
mov dword [esp + 0x6c], ecx
xor ecx, ecx
cmp al, 1
sete cl
mov byte [esp + 0x12], al
mov byte [esp + 0x13], dl
mov dword [esp + 0x48], ecx
mov cl, byte [edi + 1]
movzx eax, cl
shr eax, 5
and eax, 1
cmp dword [esp + 0x78], 8
mov dword [esp + 0x68], eax
je 0x10062e5a
and dword [esp + 0x18], 0
push 0
push ebx
mov ecx, esi
call fcn.100e147f
cmp dword [esp + 0x18], 0
mov dword [esp + 0x1c], eax
jne 0x100af38a
mov ecx, edi
call fcn.100dd0f8
mov edx, dword [esp + 0x1c]
test byte [edx], 0x40
mov dword [esp + 0x3c], eax
jne 0x10046aca
cmp byte [esp + 0x12], 0
mov cl, byte [edi + 1]
jne 0x10059fe2
mov ebx, 0xfff
or word [edi + 0xa], bx
mov ebx, dword [esp + 0x7c]
mov eax, dword [ebp + 0xd8]
test byte [eax + 0xc4], 1
je 0x10046975
xor eax, eax
and cl, 7
inc eax
cmp cl, al
je 0x10046959
movzx eax, byte [edx]
and eax, 0x3f
push eax
call fcn.1001cf50
test eax, eax
je 0x100c5f27
test byte [edi + 1], 0x20
jne 0x100abea7
mov ecx, dword [esp + 0x1c]
mov al, byte [ecx]
and al, 0x3f
cmp al, 0x1d
je 0x100c6317
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x100c639f
push 0
push ebx
mov ecx, esi
call fcn.100e147f
mov ebp, eax
mov ecx, ebp
call fcn.100de671
test eax, eax
jne 0x1013dc15
mov cl, byte [ebp]
and cl, 0x3f
cmp cl, 0x20
je 0x100a5a35
xor ecx, ecx
inc ecx
cmp dword [esp + 0x94], 0
jne 0x1009f7e7
movzx eax, byte [edi]
xor ecx, ecx
push 0
inc ecx
push 0
shr eax, 6
and eax, ecx
lea ecx, [esp + 0x64]
push ecx
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x3c]
push ecx
push dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
push eax
push dword [esp + 0x94]
call fcn.10046b34
mov esi, eax
cmp dword [esp + 0x54], 0
mov edi, dword [esp + 0x28]
jne 0x1013dc44
test esi, esi
js 0x1013dc5c
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x1013dc63
mov ebx, dword [esp + 0x34]
cmp dword [esp + 0x8c], ebx
ja 0x100abf39
mov esi, dword [esp + 0x88]
push esi
push eax
push ebx
lea eax, [esp + 0x64]
push eax
call fcn.1015692e
mov ecx, dword [esp + 0x58]
add ecx, dword [esp + 0x5c]
movzx edx, ax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x78], ecx
test dx, dx
je 0x1013dc6a
cmp dword [esp + 0x94], 0
jne 0x1009f843
mov ebx, dword [esp + 0x7c]
cmp ebx, dword [edi + 4]
ja 0x1013dc93
mov eax, dword [edi]
add eax, ebx
test byte [eax], 0x80
mov word [eax + 8], cx
jne 0x1005a006
mov al, byte [eax + 1]
and al, 7
cmp al, 4
jne 0x10059ffe
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x80]
mov word [ecx], ax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x84]
cmp eax, dword [ecx]
jbe 0x1005a072
mov dword [ecx], eax
cmp ebx, dword [edi + 4]
ja 0x1013dcc4
mov edi, dword [edi]
add edi, ebx
mov cl, byte [edi]
mov al, cl
and al, 7
cmp al, 2
je 0x1009a16e
test byte [edi + 1], 7
je 0x10095a58
test byte [edi], 0x80
jne 0x10095a58
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret 0x28
test byte [esp + 0x13], 0x80
je 0x10046922
mov al, cl
and al, 7
cmp al, 4
jne 0x10046922
jmp 0x10046915
cmp al, 3
je 0x10046a85
mov ebp, dword [esp + 0x14]
mov ecx, dword [ebp + 0xd8]
push ebx
add ecx, 0x104
push edi
call fcn.10095a2b
mov esi, eax
test esi, esi
jns 0x10046a89
jmp 0x1013dc9a
mov eax, dword [ecx]
jmp 0x10046aad
cmp dword [esp + 0x48], 0
je 0x100468d1
mov al, dl
xor edx, edx
and al, 7
inc edx
cmp al, dl
je 0x100468d1
mov al, cl
and al, 7
cmp al, 4
je 0x100468d1
mov dword [esp + 0x18], edx
jmp 0x100468d6
mov eax, dword [ebp + 0xd8]
mov eax, dword [eax + 0x24]
mov ecx, dword [eax]
xor edx, edx
inc edx
push edx
push eax
call dword [ecx + 0x58]
jmp 0x10046add
test cl, 8
je 0x10046aca
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 8]
cmp eax, 8
jne 0x10046aca
mov ecx, edi
call fcn.100af3af
mov ecx, 0xffff
cmp ax, cx
jne 0x10046aca
lea esi, [ebp + 0xb4]
mov ax, word [esi]
mov word [edi + 0xa], ax
push dword [ebp + 0xd8]
push ebx
call fcn.1015692e
xor ecx, ecx
test eax, eax
setne cl
add ecx, 2
shl cx, 2
add word [esi], cx
jmp 0x10046aca
cmp dword [esp + 0x18], 0
je 0x100c5fd1
jmp 0x1013dac4
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 8]
cmp eax, 8
jne 0x100c5fe4
mov edx, dword [esp + 0x44]
xor ecx, ecx
inc ecx
test edx, edx
je 0x100c5fe4
cmp dword [esp + 0x78], ecx
je 0x1013db9f
cmp dword [esp + 0x48], 0
je 0x100c5ff1
jmp 0x1013dbad
movzx eax, word [eax]
mov dword [esp + 0x60], eax
jmp 0x1004687b
mov al, byte [ebp]
and al, 0x3f
cmp al, 0x1d
je 0x1009f800
cmp al, 0x20
je 0x1009f800
cmp al, 0x1b
je 0x1009f800
cmp al, 0x1c
jne 0x100469b0
movzx eax, byte [edi]
push 0
push ecx
push 0
shr eax, 6
and eax, ecx
lea ecx, [esp + 0x3c]
push ecx
lea ecx, [esp + 0x48]
push ecx
push dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
push eax
push dword [esp + 0x94]
call fcn.10046b34
mov esi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], eax
test esi, esi
jns 0x100469b0
jmp 0x100469e5
mov al, byte [ebp]
and al, 0x3f
cmp al, 0x1d
je 0x100a5bfb
cmp al, 0x20
je 0x100a5bfb
cmp al, 0x1b
je 0x100a5bfb
cmp al, 0x1c
je 0x100a5bfb
mov eax, dword [esp + 0x2c]
mov edi, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], edi
mov ebp, dword [esp + 0x94]
mov ax, word [ebp]
mov ecx, dword [esp + 0x80]
cmp ax, word [ecx]
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x24]
jne 0x100a5c1c
cmp dword [esp + 0x2c], eax
jne 0x100a5c1c
mov eax, dword [esp + 0x84]
mov word [ebp], dx
cmp ebx, dword [eax]
ja 0x1009f8b4
mov ebx, dword [eax]
mov eax, dword [esp + 0x98]
mov dword [eax], ebx
movzx ecx, cx
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x28]
cmp ebx, dword [edi + 4]
ja 0x1013dc8c
mov eax, dword [edi]
add eax, ebx
mov word [eax + 0xa], cx
mov ecx, dword [esp + 0x78]
jmp 0x10046a5e
mov al, byte [edi + 1]
mov ecx, dword [ebp + 0xe4]
and al, 7
cmp al, 4
lea eax, [esp + 0x20]
push eax
jne 0x100a5c15
push 2
push esi
call fcn.1002ab62
mov esi, eax
test esi, esi
js 0x1013dc9a
mov esi, dword [esp + 0x28]
jmp 0x10046969
xor ecx, ecx
inc ecx
cmp dword [esp + 0x78], ecx
je 0x100469a2
movzx eax, word [ebp + 2]
cmp eax, dword [0x100a5a58]
jbe 0x100469a2
jmp 0x1013dc1d
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 8]
cmp eax, 2
je 0x100c5ff1
jmp 0x1013dbb7
mov edi, dword [esp + 0x30]
jmp 0x1009f876
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x100c5fd9
jmp 0x1009f365
push 3
jmp 0x100a2025
cmp dword [esp + 0x8c], edi
ja 0x1013dc7c
push esi
push eax
push edi
lea eax, [esp + 0x6c]
push eax
call fcn.1015692e
mov word [ebp], ax
mov eax, dword [esp + 0x98]
cmp edi, dword [eax]
ja 0x100a5c47
mov edi, dword [eax]
mov ecx, dword [esp + 0x60]
mov dword [eax], edi
jmp 0x1009f8c0
cmp dword [esp + 0x70], 0
jne 0x10046959
jmp 0x1013db8b
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x34], ebx
jmp 0x10046a19
mov cl, byte [eax]
and cl, 0x3f
cmp cl, 0x1b
je 0x1013dac4
cmp cl, 0x1c
je 0x1013dac4
cmp cl, 0x20
jne 0x100468ef
jmp 0x1013dac4
mov al, byte [edi + 1]
and al, 7
cmp al, 3
je 0x1004694f
movzx eax, byte [edi]
xor ecx, ecx
inc ecx
shr eax, 6
and eax, ecx
lea ecx, [esp + 0x64]
push ecx
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x54]
push ecx
push eax
push dword [esp + 0x58]
mov ecx, ebp
call fcn.10046c1c
mov esi, eax
cmp esi, 0x80028029
je 0x1013dace
test esi, esi
js 0x1013dc9a
push 0
lea esi, [ebp + 8]
push ebx
mov ecx, esi
call fcn.100e147f
mov dword [esp + 0x1c], eax
cmp ebx, dword [esi + 4]
ja 0x1013dad8
mov edi, dword [esi]
add edi, ebx
mov al, byte [eax]
and al, 0x3f
cmp al, 0x1b
jb 0x100c5fe4
cmp al, 0x1d
ja 0x100c5fe4
cmp dword [esp + 0x18], 0
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
jne 0x1013dadf
xor eax, eax
inc eax
cmp dword [esp + 0x78], eax
je 0x1013daec
cmp ecx, eax
je 0x1009f344
test ecx, ecx
je 0x1013db39
xor eax, eax
inc eax
cmp ecx, eax
je 0x1009f354
xor ecx, ecx
inc ecx
cmp dword [esp + 0x78], ecx
je 0x100a5bd5
movzx ecx, word [edi + 2]
xor eax, eax
inc eax
mov edx, ecx
and edx, eax
xor eax, eax
cmp dword [esp + 0x50], eax
setne al
xor ax, cx
and ax, word [esp + 0x6c]
xor ax, cx
mov word [edi + 2], ax
cmp edx, dword [esp + 0x50]
je 0x1004694f
push ebx
mov ecx, ebp
call fcn.100c62d6
jmp 0x1004694f
call fcn.1007b761
mov ecx, dword [esp + 0x1c]
movzx esi, ax
call fcn.10046bca
test eax, eax
je 0x100a200b
lea ecx, [esp + 0x20]
push ecx
xor ecx, ecx
inc ecx
mov eax, esi
push ecx
mov ecx, dword [ebp + 0xe4]
push eax
mov dword [esp + 0xa8], eax
call fcn.1002ab62
mov esi, eax
test esi, esi
js 0x1013dc9a
push dword [esp + 0x9c]
mov ecx, dword [ebp + 0xe4]
call fcn.1001b903
movzx edx, word [eax + 2]
shr edx, 0xa
lea esi, [ebp + 8]
and edx, 0xf
cmp ebx, dword [esi + 4]
ja 0x1013dc0e
mov ecx, dword [esi]
add ecx, ebx
xor eax, eax
cmp edx, 5
sete al
xor edx, edx
inc edx
xor ax, word [ecx + 2]
and ax, dx
xor word [ecx + 2], ax
jmp 0x10046969
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
and dword [esp + 0x20], 0
jmp 0x10046975
mov edi, ecx
jmp 0x10046893
mov esi, 0x800a9da8
jmp 0x1013dca2
mov esi, 0x800a9c85
jmp 0x100c5f77
xor edi, edi
jmp 0x100c5f9d
cmp dword [esp + 0x64], 0
jne 0x100c5fbc
jmp 0x1013dafa
cmp dword [esp + 0x9c], 0
jne 0x100c5fc9
mov eax, dword [ebp + 0xd8]
mov al, byte [eax + 0xc4]
and al, 6
cmp al, 2
jne 0x1013db31
xor eax, eax
inc eax
test edx, edx
je 0x100c5fc9
cmp ecx, eax
je 0x1009f344
test ecx, ecx
je 0x100c5fc9
mov esi, 0x800a9da1
jmp 0x1013dca2
xor eax, eax
inc eax
jmp 0x100c5fc9
cmp dword [esp + 0x4c], ecx
jne 0x1009f369
mov eax, dword [ebp + 0xd8]
mov al, byte [eax + 0xc4]
and al, 6
cmp al, 2
jne 0x1009f369
cmp dword [esp + 0x18], ecx
jne 0x1013db95
inc ecx
cmp dword [esp + 0x78], ecx
jne 0x1009f36c
cmp dword [esp + 0x9c], 0
jne 0x1009f36c
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 8]
cmp eax, 8
jne 0x100a5c04
jmp 0x1013db95
mov esi, 0x800a9d9c
jmp 0x1013dca2
mov esi, 0x800a9db0
jmp 0x1013dca2
cmp dword [esp + 0x9c], 0
jne 0x100a5bd5
mov esi, 0x800adf1c
jmp 0x1013dca2
cmp dword [esp + 0x9c], 0
jne 0x100c5ff1
mov edx, dword [esp + 0x1c]
mov al, byte [edx]
and al, 0x3f
cmp al, 0x20
je 0x1013dc04
cmp al, 0x1b
je 0x1013dbd9
cmp al, 0x1c
jne 0x1013dbe8
mov ecx, edx
call fcn.100d613a
mov al, byte [eax]
and al, 0x3f
cmp al, 0x20
je 0x1013dc04
cmp dword [esp + 0x68], 0
jne 0x1013dc04
cmp dword [esp + 0x4c], 0
jne 0x100c5ff1
mov esi, 0x800a9db1
jmp 0x1013dca2
mov esi, 0x800a9daf
jmp 0x1013dca2
xor ecx, ecx
jmp 0x100c6384
add ebp, 4
jmp 0x10046990
cmp ebx, dword [esi + 4]
jbe 0x1013dc26
xor eax, eax
jmp 0x1013dc2a
mov eax, dword [esi]
add eax, ebx
add eax, 0xc
or dword [eax], ecx
push 8
mov ecx, ebp
call fcn.1001ef41
xor ecx, ecx
inc ecx
mov dword [esp + 0x54], ecx
jmp 0x100469a2
push 0x20
push 0
push ebx
mov ecx, edi
call fcn.100e147f
mov ecx, eax
call fcn.1001ef41
jmp 0x100469f4
mov eax, esi
jmp 0x10046adf
mov esi, 0x80028ca0
jmp 0x1013dca2
neg esi
sbb esi, esi
and esi, 0x855ff
add esi, 0x800288c5
jmp 0x1013dca2
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x30], edi
jmp 0x100a5c29
xor eax, eax
jmp 0x1009f8d5
xor eax, eax
jmp 0x10046a6b
cmp esi, 0x800a9c64
je 0x1013dc5c
cmp dword [esp + 0x90], 0
jne 0x1013dc5c
push dword [esp + 0x7c]
mov eax, dword [esp + 0x18]
push esi
push dword [eax + 0xd8]
call fcn.101acb26
mov esi, eax
jmp 0x1013dc5c
xor edi, edi
jmp 0x10046abc