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

Disassembly:
mov al, byte [ebx + 0x30f]
test al, al
mov byte [esp + 0xf], 1
je 0x3f001ac1
jmp 0x3f001abc
lea edx, [ebx + 0x200]
push 0x20
push edx
call fcn.3f002a3d
mov esi, eax
sub eax, ebx
sub eax, 0x200
sar eax, 1
add esp, 8
lea ecx, [ebx + eax*2]
lea edx, [esi + 2]
push edx
lea eax, [esp + 0x18]
mov dword [esp + 0x18], ecx
push eax
mov ecx, ebx
call fcn.3f003b42
jmp 0x3f003ad7
push esi
mov ecx, ebx
call fcn.3f003c9c
jmp 0x3f003f58
mov edx, dword [ebx + 0x314]
cmp word [ebx + edx*2 + 0xfe], 0x27
je 0x3f001986
mov eax, dword [esi]
mov ecx, dword [ebx + 0x300]
sub eax, ebx
sar eax, 1
movzx eax, word [ecx + eax*2]
test ah, 0xff
jne 0x3f0096c2
movzx edx, al
xor eax, eax
mov al, byte [edx + 0x3f002638]
and eax, 1
test eax, eax
je 0x3f001986
jmp 0x3f0096d2
mov eax, dword [esi]
cmp word [eax], 0
je 0x3f003c8f
mov eax, dword [ebx + 0x314]
test eax, eax
jle 0x3f001986
movzx eax, word [ebx + eax*2 + 0xfe]
test ah, 0xff
jne 0x3f0096b2
movzx ecx, al
xor eax, eax
mov al, byte [ecx + 0x3f002638]
and eax, 7
test eax, eax
je 0x3f00190c
mov eax, dword [ebx + 0x318]
movzx ecx, byte [esi + 4]
nop
cmp ecx, dword [eax + 0x4e8]
jg 0x3f001a0e
mov edx, dword [ebx + 0x314]
mov cl, byte [esp + 0xf]
inc edx
test cl, cl
mov dword [ebx + 0x314], edx
mov eax, edx
jne 0x3f003076
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 4]
mov edx, ecx
shr ecx, 2
lea edi, [esp + 0x78]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x78]
call dword [eax]
test al, al
mov byte [esp + 0xac], al
je 0x3f0019f9
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
push eax
lea ecx, [esp + 0x7c]
add edx, 2
push ecx
mov ecx, ebx
mov dword [eax], edx
call fcn.3f001a22
mov eax, dword [ebx + 0x314]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x24]
dec eax
mov dword [ebx + 0x314], eax
add esi, 8
cmp esi, edi
mov dword [esp + 0x24], esi
jb 0x3f00194d
jmp 0x3f001b04
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x224
push ebx
push esi
mov ebx, ecx
push edi
lea eax, [esp + 0xb5]
mov ecx, 8
mov edx, 0xffff
mov byte [eax - 1], 0
mov byte [eax], 0
mov word [eax + 1], dx
add eax, 8
dec ecx
jne 0x3f001a44
mov esi, dword [ebp + 8]
mov edx, dword [esi]
lea eax, [ebx + 0x308]
push eax
mov ecx, esi
call dword [edx + 0xc]
mov eax, dword [ebx + 0x314]
mov cx, word [ebx + 0x30c]
mov word [ebx + eax*2 + 0x200], cx
mov edx, dword [ebx + 0x314]
xor eax, eax
mov ax, word [ebx + edx*2 + 0x200]
test ah, 0xff
jne 0x3f0096a7
movzx eax, al
nop
movzx ax, byte [eax + 0x3f001de0]
mov ecx, dword [ebx + 0x314]
mov word [ebx + ecx*2 + 0x100], ax
mov al, byte [ebx + 0x30e]
test al, al
jne 0x3f001487
mov byte [esp + 0xf], 0
movzx edx, byte [ebx + 0x310]
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0xb0]
push eax
push ecx
mov ecx, ebx
mov dword [esp + 0x44], edx
call fcn.3f002078
lea edi, [esp + eax*8 + 0xb0]
lea edx, [esp + 0xb0]
cmp edx, edi
lea esi, [esp + 0xb0]
mov dword [esp + 0x24], esi
mov dword [esp + 0x38], edi
jb 0x3f00194d
mov esi, dword [ebp + 8]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 4]
test al, al
jne 0x3f001a58
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
xor ecx, ecx
mov word [ebx + eax*2 + 0x200], cx
mov edx, dword [ebx + 0x314]
mov eax, dword [esi]
mov word [ebx + edx*2 + 0x100], cx
mov edx, dword [esi + 4]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x324]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x3c]
movsx eax, word [eax + edx*2 + 0x1c]
movzx edx, byte [esp + 0x2c]
add eax, edx
cmp eax, 0xff
jg 0x3f0096fb
cmp eax, ecx
setl cl
dec cl
and ecx, eax
mov byte [esp + 0x2c], cl
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
mov byte [esp + 0x20], 0
mov byte [esp + 0x21], 0
mov word [esp + 0x22], 0xffff
call fcn.3f003117
test al, al
jne 0x3f003abb
mov esi, dword [esp + 0x24]
mov al, byte [esi + 4]
test al, al
je 0x3f003e6c
movzx eax, word [esi + 6]
cmp eax, dword [ebx + 0x320]
jge 0x3f0019b4
jmp 0x3f0097d6
lea edx, [ebx + 0x200]
push edx
lea eax, [esp + 0x134]
push eax
call fcn.3f0011b4
mov edx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x300]
sub esi, ebx
sub esi, 0x200
sub edx, ebx
sar esi, 1
lea ecx, [esp + esi*2 + 0x138]
sar edx, 1
push eax
mov dword [esp + 0x1c], ecx
lea edi, [eax + edx*2]
call fcn.3f003788
mov ecx, dword [ebx + 0x300]
lea edx, [ecx + eax*2]
add esp, 0xc
cmp edi, edx
jae 0x3f003a3f
cmp word [edi], 0
mov esi, edi
je 0x3f009721
xor eax, eax
mov ax, word [esi]
test ah, 0xff
jne 0x3f009705
movzx eax, al
movzx eax, byte [eax + 0x3f002638]
and eax, 2
test eax, eax
je 0x3f009715
mov esi, dword [ebx + 0x300]
cmp esi, edi
jae 0x3f009755
xor eax, eax
mov ax, word [esi]
test ah, 0xff
jne 0x3f00973a
movzx ecx, al
xor eax, eax
mov al, byte [ecx + 0x3f002638]
and eax, 2
test eax, eax
je 0x3f00974a
mov eax, dword [ebx + 0x304]
mov edx, dword [eax + 4]
movzx esi, byte [esp + 0x18]
push edx
push esi
lea ecx, [esp + 0x138]
push ecx
mov ecx, dword [eax + 8]
call fcn.3f0036c0
mov edi, dword [esp + 0x10]
mov ax, word [edi - 2]
test ah, 0xff
jne 0x3f009777
movzx edx, al
xor ecx, ecx
mov cl, byte [edx + 0x3f0028b0]
and ecx, 4
mov dword [esp + 0x20], ecx
je 0x3f003b15
jmp 0x3f009787
push 0
lea ecx, [esp + 0x18]
push ecx
mov ecx, ebx
call fcn.3f003b42
mov al, byte [esp + 0x19]
xor esi, esi
test al, al
js 0x3f00149f
movzx eax, byte [esp + 0x18]
mov ecx, dword [ebx + 0x318]
cmp eax, dword [ecx + 0x4e8]
jg 0x3f0030f3
test esi, esi
jne 0x3f0039c0
mov eax, dword [ebx + 0x304]
movzx ecx, byte [esp + 0x18]
mov edx, dword [eax + 4]
push edx
push ecx
lea ecx, [ebx + 0x200]
push ecx
mov ecx, dword [eax + 8]
call fcn.3f0036c0
mov ecx, dword [ebx + 0x318]
mov eax, dword [ecx + 0x5ec]
mov esi, dword [ecx + 0x404]
mov edx, dword [ecx + 0x4e8]
add eax, esi
cmp edx, eax
jle 0x3f0030f3
push eax
call fcn.3f004794
jmp 0x3f0030f3
push esi
mov ecx, ebx
call fcn.3f003c9c
jmp 0x3f001959
mov edx, dword [esi]
push edx
call fcn.3f003788
add esp, 4
cmp eax, 1
jbe 0x3f003102
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], esi
add esi, 2
xor edi, edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], esi
mov dword [esp + 0x1c], edi
lea eax, [esp + 0xf5]
mov ecx, 8
mov edx, 0xffff
mov byte [eax - 1], 0
mov byte [eax], 0
mov word [eax + 1], dx
add eax, 8
dec ecx
jne 0x3f003eae
mov ax, word [esi]
test ah, 0xff
jne 0x3f00980b
movzx edx, al
xor ecx, ecx
mov cl, byte [edx + 0x3f0028b0]
and ecx, 4
mov dword [esp + 0x20], ecx
jne 0x3f00981b
mov ecx, dword [ebx + 0x314]
mov eax, 0x20
mov word [ebx + ecx*2 + 0x200], ax
mov edx, dword [ebx + 0x314]
mov word [ebx + edx*2 + 0x100], ax
lea eax, [esp + 0xf0]
push eax
lea ecx, [esp + 0x34]
push ecx
mov ecx, ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], esi
call fcn.3f002078
lea eax, [esp + eax*8 + 0xf0]
lea edx, [esp + 0xf0]
cmp edx, eax
lea esi, [esp + 0xf0]
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], eax
jb 0x3f003f4c
sub dword [ebx + 0x314], edi
jmp 0x3f0019b4
mov eax, dword [esi]
cmp word [eax], 0
je 0x3f0014d7
movzx ecx, byte [esi + 4]
mov edx, dword [ebx + 0x318]
cmp ecx, dword [edx + 0x4e8]
jg 0x3f003fcb
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 4]
mov eax, ecx
shr ecx, 2
lea edi, [esp + 0x40]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x40]
lea ecx, [esp + 0x40]
call dword [edx + 8]
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x40]
call dword [eax]
test al, al
mov byte [esp + 0x74], al
je 0x3f003fc3
inc dword [ebx + 0x314]
mov eax, dword [esp + 0x10]
mov edi, dword [eax]
push eax
lea ecx, [esp + 0x44]
push ecx
add edi, 2
mov ecx, ebx
mov dword [eax], edi
call fcn.3f001a22
dec dword [ebx + 0x314]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
add esi, 8
cmp esi, eax
mov dword [esp + 0x10], esi
jb 0x3f003f4c
jmp 0x3f003f41
push eax
call fcn.3f00d428
jmp 0x3f001aa0
push eax
call fcn.3f00bc33
and eax, 0x10400000
jmp 0x3f001982
push eax
call fcn.3f00bc33
and eax, 0x100000
jmp 0x3f001944
mov eax, dword [ebx + 0x314]
xor ecx, ecx
mov cx, word [ebx + eax*2 + 0x200]
push ecx
call fcn.3f00da3f
mov edx, dword [ebx + 0x314]
mov word [ebx + edx*2 + 0x200], ax
jmp 0x3f001986
mov byte [esp + 0x2c], 0xff
jmp 0x3f0030c9
push eax
call fcn.3f00bc33
and eax, 0x200000
jmp 0x3f003a37
add esi, 2
cmp word [esi], ax
jne 0x3f003a1c
mov esi, dword [esp + 0x10]
push esi
call fcn.3f003788
add esp, 4
push eax
push esi
call fcn.3f00dae7
jmp 0x3f003a3f
push eax
call fcn.3f00bc33
and eax, 0x200000
jmp 0x3f003a69
add esi, 2
cmp esi, edi
jb 0x3f003a4d
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x130]
sub edx, eax
sar edx, 1
push edx
lea ecx, [esp + 0x134]
push ecx
call fcn.3f00dae7
jmp 0x3f003a71
cmp ax, 0x201d
je 0x3f009787
cmp ax, 0x2019
jne 0x3f003b15
test ah, 0xff
je 0x3f00979e
cmp ax, 0x201c
je 0x3f0097b6
cmp ax, 0x2018
jne 0x3f003b15
jmp 0x3f0097b6
movzx edx, al
xor ecx, ecx
mov cl, byte [edx + 0x3f0028b0]
and ecx, 1
mov dword [esp + 0x20], ecx
je 0x3f003b15
mov word [edi], ax
mov eax, dword [ebx + 0x304]
mov word [edi - 2], 0x20
mov edx, dword [eax + 4]
push edx
push esi
lea ecx, [esp + 0x138]
jmp 0x3f003b0c
mov ecx, dword [ebx + 0x31c]
movzx edx, word [ecx + eax*4]
mov eax, dword [ebx + 0x328]
lea esi, [eax + edx*2]
push esi
call fcn.3f003788
lea eax, [esi + eax*2 + 2]
push 0x20
push eax
call fcn.3f002a3d
add esp, 0xc
test eax, eax
je 0x3f0019b4
jmp 0x3f003e80
cmp ax, 0x201d
je 0x3f00981b
cmp ax, 0x2019
jne 0x3f003ee3
cmp edi, 1
jl 0x3f00982a
cmp ax, word [esi - 2]
je 0x3f003ee3
mov edx, dword [ebx + 0x314]
mov word [ebx + edx*2 + 0x200], ax
mov eax, dword [ebx + 0x314]
movzx eax, word [ebx + eax*2 + 0x200]
test ah, 0xff
je 0x3f009853
push eax
call fcn.3f00d428
jmp 0x3f00985e
movzx ecx, al
movzx ax, byte [ecx + 0x3f001de0]
mov edx, dword [ebx + 0x314]
mov word [ebx + edx*2 + 0x100], ax
mov ecx, dword [ebx + 0x314]
add esi, 2
inc ecx
mov dword [ebx + 0x314], ecx
inc edi
jmp 0x3f003ebf