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

Disassembly:
mov eax, dword [esp + 0x1c]
sub esp, 0x44
test eax, eax
je 0x788e31
mov dword [eax], 0
mov eax, dword [esp + 0x64]
test eax, eax
je 0x788e3f
mov dword [eax], 0
mov eax, dword [esp + 0x48]
push ebx
mov ebx, dword [esp + 0x60]
push ebp
mov ecx, dword [eax + 0x24]
xor ebp, ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x24], 0
mov byte [esp + 0xb], 0
push esi
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x10], esi
push edi
mov edi, dword [esp + 0x5c]
test bl, 0x40
jne 0x788e9b
push edi
push eax
call fcn.007634a0
add esp, 8
lea eax, [esp + 0x6c]
push eax
push dword [esp + 0x64]
push edi
call fcn.007922c0
add esp, 0xc
test eax, eax
jne 0x789977
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x18], ebp
movzx eax, byte [eax + 1]
mov dword [esp + 0x30], eax
mov eax, ebx
shr eax, 0x10
and ebx, 0xfffeffff
and eax, 1
mov dword [esp + 0x3c], eax
test eax, eax
je 0x788efa
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x44], eax
mov al, byte [edi + 0x34]
mov byte [esp + 0x13], al
mov dword [edi + 0x2c], ebp
mov dword [edi + 0x30], ebp
mov byte [edi + 0x34], 0
mov eax, dword [esp + 0x6c]
mov dl, byte [eax]
movzx ecx, dl
lea eax, [ecx - 3]
cmp eax, 9
ja case.0x788f16.7
movzx eax, byte [eax + 0x78998c]
jmp dword [eax*4 + 0x789980]
mov al, byte [edi + 0x34]
test al, al
jne 0x788f30
mov eax, dword [esp + 0x6c]
mov byte [edi + 0x34], dl
cmp dword [eax + 8], ebp
jmp 0x788f93
cmp dl, al
je 0x788f58
mov ebp, 1
test bl, 0x40
jne 0x788f58
movzx eax, al
push eax
mov eax, dword [esp + 0x70]
push ecx
push dword [eax + 4]
push 0x9438d8
push esi
call fcn.0075bb00
add esp, 0x14
test byte [edi + 0x58], 0x10
jne 0x788fba
mov eax, dword [esp + 0x6c]
mov ecx, dword [edi + 0x30]
mov eax, dword [eax + 4]
cmp eax, ecx
je 0x788f89
mov ebp, 1
test bl, 0x40
jne 0x788f89
push eax
push ecx
push dword [edi + 0x2c]
push 0x943920
push esi
call fcn.0075bb00
add esp, 0x14
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 8]
cmp eax, dword [edi + 0x2c]
je 0x788fba
mov ebp, 1
test bl, 0x40
jne 0x788fba
push dword [edi + 0x2c]
mov ecx, dword [esp + 0x70]
push dword [ecx + 8]
push dword [ecx + 4]
push 0x943968
push esi
call fcn.0075bb00
add esp, 0x14
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + 4]
mov dword [edi + 0x2c], eax
mov eax, dword [ecx + 0xc]
and dword [edi + 0x58], 0xffffffef
mov dword [edi + 0x30], eax
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00791c50
mov esi, eax
add esp, 8
test esi, esi
jne 0x789882
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x64]
push dword [esp + 0x20]
call fcn.00791be0
add esp, 0xc
test eax, eax
jne 0x789050
nop
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 4], 2
jne 0x78903b
mov eax, ebx
or eax, 0x2000
push eax
push dword [ecx + 0xc]
push dword [ecx]
push edi
push dword [esp + 0x68]
call fcn.00791460
mov esi, eax
add esp, 0x14
test esi, esi
je 0x78903b
cmp esi, 0xffff8704
jne 0x789624
mov ebp, 1
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x1c]
call fcn.00791b80
add esp, 8
test eax, eax
je 0x789000
push dword [esp + 0x18]
call fcn.00791b70
mov esi, eax
add esp, 4
test esi, esi
jne 0x789882
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
mov cl, byte [eax]
mov eax, ebx
and eax, 0x1000
cmp cl, 6
jne 0x7890bd
test eax, eax
jne 0x789219
mov eax, ebx
and eax, 0xa00
cmp eax, 0x200
je 0x789219
lea ebp, [esi + 1]
mov esi, dword [esp + 0x14]
test bl, 0x40
jne 0x78978e
push dword [esp + 0x60]
push 0x9439b0
push esi
call fcn.0075bb00
add esp, 0xc
jmp 0x78978e
test eax, eax
je 0x7890ea
mov esi, dword [esp + 0x14]
mov ebp, 1
test bl, 0x40
jne 0x78978e
push dword [esp + 0x60]
push 0x9439dc
push esi
call fcn.0075bb00
add esp, 0xc
jmp 0x78978e
cmp cl, 0xc
je 0x789219
mov eax, dword [esp + 0x6c]
test byte [eax + 0x3c], 4
je 0x789219
test ebx, 0x200
jne 0x789125
mov ebp, 1
test bl, 0x40
jne 0x789219
push dword [esp + 0x60]
push 0x943a08
jmp 0x78920d
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00791c50
mov esi, eax
add esp, 8
test esi, esi
jne 0x789882
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x64]
push dword [esp + 0x20]
call fcn.00791be0
add esp, 0xc
test eax, eax
jne 0x7891d0
mov edi, ebx
or edi, 0x4400
nop
mov eax, dword [esp + 0x1c]
cmp dword [eax + 4], 1
jne 0x7891bb
mov esi, dword [esp + 0x5c]
push edi
push dword [eax]
push esi
push dword [esp + 0x64]
call fcn.00762490
add esp, 0x10
test eax, eax
jne 0x7891b6
push eax
push eax
push eax
mov eax, edi
or eax, 0x10000
push eax
mov eax, dword [esp + 0x2c]
push 0
push 0
push dword [eax]
push esi
push dword [esp + 0x78]
call fcn.00788e20
mov esi, eax
add esp, 0x24
test esi, esi
je 0x7891bb
cmp esi, 0xffff8704
jne 0x789882
mov ebp, 1
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x1c]
call fcn.00791b80
add esp, 8
test eax, eax
je 0x789160
push dword [esp + 0x18]
call fcn.00791b70
mov esi, eax
add esp, 4
test esi, esi
jne 0x789882
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
test byte [eax + 0x3c], 1
je 0x789219
test ebx, 0x800
je 0x789219
lea ebp, [esi + 1]
test bl, 0x40
jne 0x789219
push dword [esp + 0x60]
push 0x93ed30
push dword [esp + 0x1c]
call fcn.0075bb00
add esp, 0xc
mov dword [esp + 0x30], 1
test ebx, 0x4000
je 0x789234
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x24], eax
test ebx, 0x8000
je 0x789624
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x789624
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 0x24]
mov dword [ecx], eax
jmp 0x789624
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00791c50
mov esi, eax
add esp, 8
test esi, esi
jne 0x789882
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x64]
push dword [esp + 0x20]
call fcn.00791be0
add esp, 0xc
test eax, eax
jne 0x78944c
nop
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 4]
cmp eax, 3
jne 0x7893c2
mov eax, dword [esp + 0x6c]
cmp byte [eax], 4
jne 0x7894ce
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x40]
push eax
push ebx
push 0
push 0
push dword [ecx]
push edi
push dword [esp + 0x78]
call fcn.00788e20
mov esi, eax
add esp, 0x24
test esi, esi
je 0x7892e7
cmp esi, 0xffff8704
jne 0x789624
mov ebp, 1
test ebx, 0x8000
je 0x78933d
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x789301
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], ecx
jmp 0x789333
mov eax, dword [esp + 0x40]
test eax, eax
je 0x789333
cmp ecx, eax
je 0x789333
mov ebp, 1
test bl, 0x40
jne 0x789333
push eax
mov eax, dword [esp + 0x20]
push dword [eax]
push 0x943a94
push dword [esp + 0x20]
call fcn.0075bb00
mov ecx, dword [esp + 0x3c]
add esp, 0x10
mov eax, dword [esp + 0x78]
test eax, eax
je 0x78933d
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
test ebx, 0x4000
je 0x78937f
mov edx, dword [ecx + 8]
mov eax, dword [esp + 0x28]
cmp edx, eax
je 0x78937b
mov ebp, 1
test bl, 0x40
jne 0x78937b
push edx
push eax
push dword [ecx]
push 0x943ac4
push dword [esp + 0x24]
call fcn.0075bb00
mov ecx, dword [esp + 0x30]
add esp, 0x14
mov eax, dword [esp + 0x28]
add dword [esp + 0x24], eax
test ebp, ebp
jne 0x789433
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x30]
lea eax, [edx + 1]
cmp esi, eax
je 0x789433
mov ebp, 1
test bl, 0x40
jne 0x789433
lea eax, [esi - 1]
push eax
push edx
push dword [ecx]
push 0x943b00
push dword [esp + 0x24]
call fcn.0075bb00
add esp, 0x14
jmp 0x789433
cmp eax, 2
jne 0x789433
mov eax, dword [ecx + 0x10]
cmp eax, 2
jbe 0x7893f2
mov ebp, 1
test bl, 0x40
jne 0x789433
push dword [ecx]
push dword [esp + 0x64]
push 0x943b38
push dword [esp + 0x20]
call fcn.0075bb00
add esp, 0x10
jmp 0x789433
xor edi, edi
test eax, eax
je 0x78942f
push ebx
push dword [ecx + 0xc]
push dword [ecx]
push dword [esp + 0x68]
push dword [esp + 0x68]
call fcn.00791460
mov esi, eax
add esp, 0x14
test esi, esi
je 0x789425
cmp esi, 0xffff8704
jne 0x789624
mov ebp, 1
mov ecx, dword [esp + 0x1c]
inc edi
cmp edi, dword [ecx + 0x10]
jb 0x7893f8
mov edi, dword [esp + 0x5c]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x1c]
call fcn.00791b80
add esp, 8
test eax, eax
je 0x789290
push dword [esp + 0x18]
call fcn.00791b70
mov esi, eax
add esp, 4
test esi, esi
jne 0x789882
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
cmp byte [eax], 4
je 0x789624
cmp dword [esp + 0x20], esi
jne 0x78949d
lea eax, [esp + 0x20]
push eax
push esi
push esi
push dword [edi]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x48]
call fcn.007942a0
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x789882
mov eax, dword [esp + 0x6c]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x2c], ecx
cmp dx, word [eax + 0x18]
jae 0x789624
mov eax, dword [esp + 0x58]
mov edx, dword [eax + 0x2e0]
mov esi, edx
and esi, 0x400
je 0x7894e6
mov eax, 0x26
jmp 0x7894f4
push 0x943a80
push dword [esp + 0x18]
call fcn.0075c220
add esp, 8
mov esi, eax
jmp 0x7898e5
mov eax, edx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
and eax, 6
movzx edi, cx
mov ecx, dword [esp + 0x20]
lea eax, [eax + edi*2]
movzx eax, word [eax + ecx + 0x1a]
add eax, ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x6c]
movzx ecx, word [eax + 0x18]
lea eax, [edi + 1]
cmp eax, ecx
jae 0x78954e
test esi, esi
je 0x789531
mov ecx, dword [esp + 0x20]
mov eax, 0x26
lea eax, [eax + edi*2]
movzx eax, word [eax + ecx + 0x1c]
add eax, ecx
jmp 0x789552
mov ecx, dword [esp + 0x20]
and dl, 1
movzx eax, dl
neg eax
sbb eax, eax
and eax, 6
lea eax, [eax + edi*2]
movzx eax, word [eax + ecx + 0x1c]
add eax, ecx
jmp 0x789552
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x4c]
lea ecx, [esp + 0x28]
push 0
push ecx
lea ecx, [esp + 0x40]
push ecx
push ebx
push eax
xor ecx, ecx
mov eax, edi
cmp word [esp + 0x40], cx
cmove eax, ecx
push eax
push dword [edi + 4]
push dword [esp + 0x78]
push dword [esp + 0x78]
call fcn.00788e20
mov esi, eax
add esp, 0x24
test esi, esi
je 0x78959b
cmp esi, 0xffff8704
jne 0x789624
mov ebp, 1
test ebx, 0x4000
je 0x7895db
mov eax, dword [esp + 0x28]
add dword [esp + 0x24], eax
mov ecx, dword [edi + 8]
cmp ecx, eax
je 0x7895db
mov ebp, 1
test bl, 0x40
jne 0x7895db
push eax
mov eax, dword [esp + 0x30]
push ecx
movzx eax, ax
push eax
push dword [esp + 0x6c]
push 0x943b88
push dword [esp + 0x28]
call fcn.0075bb00
add esp, 0x18
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
lea eax, [ecx + 1]
cmp edx, eax
je 0x78960d
mov ebp, 1
test bl, 0x40
jne 0x78960d
lea eax, [edx - 1]
push eax
push ecx
push dword [edi + 4]
push 0x943bcc
push dword [esp + 0x24]
call fcn.0075bb00
add esp, 0x14
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x6c]
inc ecx
mov dword [esp + 0x2c], ecx
cmp cx, word [eax + 0x18]
jb 0x7894b3
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x5c]
mov eax, dword [eax + 0x3c]
and eax, 0x100
test ebp, ebp
jne 0x78978a
test esi, esi
jne 0x78978a
test eax, eax
je 0x7896a5
cmp dword [esp + 0x20], esi
jne 0x789672
lea eax, [esp + 0x20]
push eax
push esi
push esi
push dword [edi]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x48]
call fcn.007942a0
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x789882
push ebx
push 0
push 1
push 0
push dword [esp + 0x70]
push dword [esp + 0x34]
push dword [edi]
push edi
push dword [esp + 0x78]
call fcn.00788170
mov esi, eax
add esp, 0x24
test esi, esi
jne 0x789882
mov eax, dword [esp + 0x6c]
and dword [eax + 0x3c], 0xfffffeff
cmp dword [esp + 0x20], 0
jne 0x7896d2
lea eax, [esp + 0x20]
push eax
push 0
push 0
push dword [edi]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x48]
call fcn.007942a0
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x789882
mov ecx, dword [esp + 0x20]
cmp word [ecx + 0x14], 0
jne 0x7896f0
mov al, byte [ecx + 0x19]
cmp al, 3
je 0x78971c
cmp al, 4
je 0x78971c
test esi, esi
jne 0x78978a
test bl, 2
jne 0x78978a
mov eax, dword [esp + 0x6c]
mov al, byte [eax]
cmp al, 4
je 0x78978a
cmp al, 6
je 0x78978a
mov eax, dword [esp + 0x58]
test ebx, 0x400
je 0x789744
mov eax, dword [eax + 0x10]
jmp 0x78974d
mov ebp, 1
test bl, 0x40
jne 0x7898e5
push dword [esp + 0x60]
push 0x943c04
push dword [esp + 0x1c]
call fcn.0075bb00
add esp, 0xc
jmp 0x7898e5
mov eax, dword [eax + 0x12c]
mov eax, dword [eax + 0xc]
push ebx
test eax, eax
mov ecx, fcn.007cd1f0
cmove eax, ecx
push eax
push dword [esp + 0x70]
push dword [esp + 0x70]
push dword [esp + 0x30]
push dword [edi]
push dword [esp + 0x70]
call fcn.007899a0
mov esi, eax
add esp, 0x1c
test esi, esi
je 0x78978a
cmp esi, 0xffff8704
jne 0x789882
mov ebp, 1
mov esi, dword [esp + 0x14]
test ebx, 0x4000
je 0x7897ca
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
cmp ecx, eax
je 0x7897ca
cmp dword [esp + 0x3c], 0
je 0x7897ca
mov ebp, 1
test bl, 0x40
jne 0x7897ca
push eax
push ecx
push dword [esp + 0x68]
push 0x943c38
push esi
call fcn.0075bb00
add esp, 0x14
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x7897d8
mov eax, dword [esp + 0x30]
mov dword [ecx], eax
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x7897e6
mov eax, dword [esp + 0x24]
mov dword [ecx], eax
mov edi, dword [edi + 0x18]
lea eax, [esp + 0x50]
push eax
mov eax, dword [esp + 0x60]
push dword [esp + 0x64]
push dword [eax]
push edi
call fcn.00792450
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x789882
cmp dword [esp + 0x50], eax
je 0x78982c
lea ebp, [eax + 1]
test bl, 0x40
jne 0x789845
push dword [esp + 0x60]
push 0x943c70
push dword [esp + 0x1c]
call fcn.0075bb00
add esp, 0xc
jmp 0x789845
mov eax, dword [esp + 0x5c]
push dword [esp + 0x60]
push dword [eax]
push edi
call fcn.007924f0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x789882
cmp dword [esp + 0x3c], 0
je 0x789901
mov edi, dword [esp + 0x5c]
cmp dword [edi + 0x30], 0
je 0x7898ec
mov ebp, 1
test bl, 0x40
jne 0x7898ec
push dword [edi + 0x2c]
push 0x943c88
push dword [esp + 0x1c]
call fcn.0075bb00
add esp, 0xc
jmp 0x7898ec
mov edi, dword [esp + 0x5c]
jmp 0x7898e5
mov eax, dword [esp + 0x6c]
and ebx, 0x40
test dword [eax + 0x3c], 0x200
je 0x7898c5
test ebx, ebx
jne 0x7898dc
push ebx
push 0x943a30
push dword [esp + 0x68]
push 0x93ed78
push esi
call fcn.0075bb00
push dword [esp + 0x74]
push 0x93e798
push esi
call fcn.0075bb00
add esp, 0x20
jmp 0x7898dc
test ebx, ebx
jne 0x7898dc
push ecx
push dword [esp + 0x64]
push 0x943a44
push esi
call fcn.0075bb00
add esp, 0x10
or dword [edi + 0x58], 0x10
mov esi, 0xffff8704
cmp dword [esp + 0x3c], 0
je 0x789901
mov eax, dword [esp + 0x44]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x48]
mov dword [edi + 0x2c], eax
mov al, byte [esp + 0x13]
mov byte [edi + 0x34], al
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x789927
mov eax, dword [esp + 0x5c]
push 0
push ecx
push dword [eax]
push dword [esp + 0x40]
call fcn.00795f00
add esp, 0x10
test eax, eax
je 0x789927
test esi, esi
cmove esi, eax
push dword [esp + 0x6c]
push dword [esp + 0x60]
push dword [esp + 0x1c]
call fcn.007926a0
add esp, 0xc
test eax, eax
je 0x789944
test esi, esi
cmove esi, eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x789967
push eax
call fcn.00791b70
add esp, 4
test eax, eax
je 0x789967
test esi, esi
jne 0x789975
pop edi
mov esi, eax
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
test esi, esi
jne 0x789975
cmp ebp, 1
jne 0x789975
mov esi, 0xffff8704
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret