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

Disassembly:
sub esp, 0x14c
mov eax, dword [esp + 0x174]
mov edx, dword [esp + 0x16c]
push ebx
mov ebx, dword [esp + 0x15c]
push ebp
push esi
push edi
push 0
push eax
lea esi, [ebx + 0x58]
mov ecx, 0x22
lea edi, [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x188]
push ecx
push edx
lea eax, [esp + 0xe4]
push eax
mov dword [esp + 0x3c], 0
mov byte [esp + 0x2b], 0
mov byte [esp + 0x2a], 0
call fcn.003e1da0
mov eax, dword [ebx + 0x104]
mov ecx, dword [esp + 0x178]
mov edi, dword [ecx + 4]
mov ebp, dword [esp + 0x18c]
mov edx, dword [esp + 0x184]
shr eax, 2
and eax, 1
add esp, 0x14
and edi, 0x80
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], edi
je 0x3e208f
mov eax, 1
sub eax, ebp
add edx, eax
mov dword [esp + 0x170], edx
mov esi, dword [ecx + 0x280]
mov ebx, dword [esp + 0x16c]
cmp ebx, esi
jge 0x3e20c8
mov eax, esi
sub ebx, eax
add dword [esp + 0x174], ebx
mov edi, eax
sub edi, dword [esp + 0x16c]
mov dword [esp + 0x16c], eax
add dword [esp + 0x188], edi
mov edi, dword [esp + 0x1c]
mov ebx, esi
mov eax, dword [ecx + 0x288]
add eax, esi
mov esi, dword [esp + 0x174]
add esi, ebx
cmp esi, eax
jle 0x3e20e6
sub eax, ebx
mov dword [esp + 0x174], eax
mov esi, dword [ecx + 0x284]
cmp edx, esi
jge 0x3e2113
mov eax, esi
mov ebx, edx
sub ebx, eax
add ebp, ebx
mov ebx, eax
sub ebx, edx
add dword [esp + 0x18c], ebx
mov edx, eax
mov dword [esp + 0x178], ebp
mov dword [esp + 0x170], edx
mov ecx, dword [ecx + 0x28c]
lea eax, [ecx + esi]
lea ecx, [edx + ebp]
cmp ecx, eax
jle 0x3e212e
sub eax, edx
mov ebp, eax
mov dword [esp + 0x178], ebp
xor ebx, ebx
cmp edi, ebx
je 0x3e213f
lea edx, [edx + ebp - 1]
mov dword [esp + 0x170], edx
cmp dword [esp + 0x174], ebx
jle 0x3e2870
cmp ebp, ebx
jle 0x3e2870
mov esi, dword [esp + 0x17c]
mov eax, dword [esi + 0xe0]
test eax, 0x40000000
mov dword [esp + 0x48], eax
jne 0x3e21f8
test eax, 0x10000100
je 0x3e2181
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
jmp 0x3e21f8
mov eax, dword [esi + 0x74]
mov ecx, dword [esp + 0x184]
cmp eax, ecx
jl 0x3e2197
sub eax, ecx
mov dword [esp + 0x20], eax
jmp 0x3e219b
mov dword [esp + 0x20], ebx
mov eax, dword [esi + 0x78]
cmp eax, ecx
jl 0x3e21aa
sub eax, ecx
mov dword [esp + 0x24], eax
jmp 0x3e21ae
mov dword [esp + 0x24], ebx
movzx edx, byte [esi + 0x2d1]
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x1c]
push ecx
push edx
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x170]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0xe8]
push edx
push eax
call fcn.003e10d0
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
add dword [esp + 0x1a4], ecx
add esp, 0x1c
add dword [esp + 0x18c], edx
mov eax, dword [esp + 0x168]
mov eax, dword [eax + 0xd8]
lea ecx, [eax + eax*2]
add ecx, ecx
add ecx, ecx
add ecx, ecx
sub ecx, eax
mov edx, dword [ecx*4 + 0x41c808]
mov dword [esp + 0x40], eax
mov eax, edx
and eax, 0xfc000
cmp eax, 0x50000
jg 0x3e22a4
je 0x3e2304
cmp eax, 0x2c000
jg 0x3e2277
je 0x3e226d
cmp eax, 0x20000
jg 0x3e225b
je 0x3e226d
cmp eax, 0x14000
je 0x3e226d
cmp eax, 0x18000
je 0x3e226d
cmp eax, 0x1c000
je 0x3e226d
jmp 0x3e2309
cmp eax, 0x24000
je 0x3e226d
cmp eax, 0x28000
jne 0x3e2309
mov byte [esp + 0x17], 1
jmp 0x3e2309
cmp eax, 0x44000
jg 0x3e2294
je 0x3e2304
cmp eax, 0x3c000
je 0x3e2304
cmp eax, 0x40000
je 0x3e2304
jmp 0x3e2309
cmp eax, 0x48000
je 0x3e2304
cmp eax, 0x4c000
je 0x3e2304
jmp 0x3e2309
cmp eax, 0x6c000
jg 0x3e22dd
je 0x3e2304
cmp eax, 0x60000
jg 0x3e22cd
je 0x3e2304
cmp eax, 0x54000
je 0x3e2304
cmp eax, 0x58000
je 0x3e2304
cmp eax, 0x5c000
je 0x3e2304
jmp 0x3e2309
cmp eax, 0x64000
je 0x3e2304
cmp eax, 0x68000
je 0x3e2304
jmp 0x3e2309
cmp eax, 0x78000
jg 0x3e22f6
je 0x3e2304
cmp eax, 0x70000
je 0x3e2304
cmp eax, 0x74000
je 0x3e2304
jmp 0x3e2309
cmp eax, 0x7c000
je 0x3e2304
cmp eax, 0x80000
jne 0x3e2309
mov byte [esp + 0x16], 1
mov ebx, dword [esi + 0x140]
lea eax, [ebx - 0x53]
cmp eax, 0xb
mov dword [esp + 0x44], eax
mov ecx, 4
mov edi, 3
mov ebp, 8
ja 0x3e2360
cmp byte [esi + 0x2d1], 1
jne 0x3e234f
mov dword [esp + 0x9c], 2
mov dword [esp + 0x18], 7
mov dword [esp + 0x10], ecx
jmp 0x3e24af
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0xa
jmp 0x3e24a8
cmp byte [esp + 0x17], 0
jne 0x3e2416
cmp byte [esp + 0x16], 0
jne 0x3e2416
mov eax, dword [esp + 0x168]
mov eax, dword [eax + 0xa8]
cmp eax, ecx
jle 0x3e2393
mov dword [esp + 0x9c], eax
jmp 0x3e24af
mov esi, 1
cmp eax, esi
jne 0x3e23a9
mov dword [esp + 0x9c], esi
mov dword [esp + 0x18], ebp
jmp 0x3e23d7
cmp eax, 2
jne 0x3e23bf
mov dword [esp + 0x9c], eax
mov dword [esp + 0x18], 7
jmp 0x3e23d7
and edx, esi
mov eax, edx
xor edx, edx
cmp eax, esi
setne dl
mov dword [esp + 0x9c], ecx
add edx, edi
mov dword [esp + 0x18], edx
lea eax, [ebx - 1]
cmp eax, 0x86
ja case.0x3e23ec.2
movzx eax, byte [eax + 0x3e2890]
jmp dword [eax*4 + 0x3e287c]
mov dword [esp + 0x10], 6
jmp 0x3e24af
mov dword [esp + 0x10], 0xa
jmp 0x3e24af
mov dword [esp + 0x10], esi
jmp 0x3e24af
mov al, byte [esi + 0x2d1]
cmp al, 1
je 0x3e2333
mov edx, dword [esp + 0x160]
cmp dword [edx + 0x12430], 0
jne 0x3e249b
cmp al, 2
jb 0x3e2485
movzx eax, al
mov dword [esp + 0x9c], ecx
lea edx, [eax - 2]
mov ecx, edx
shl dword [esp + 0x16c], cl
lea ecx, [eax - 2]
shl dword [esp + 0x188], cl
mov ecx, edx
shl dword [esp + 0x174], cl
test dword [esp + 0x48], 0x10000100
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0xa
jne 0x3e24af
mov ecx, dword [esp + 0x20]
lea edx, [ecx + eax - 2]
mov dword [esp + 0x20], edx
jmp 0x3e24af
mov eax, 1
mov dword [esp + 0x9c], eax
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], eax
jmp 0x3e24af
mov eax, dword [esp + 0x168]
mov ecx, dword [eax + 0xa8]
mov dword [esp + 0x9c], ecx
mov edx, dword [esp + 0x40]
mov dword [esp + 0xcc], edx
mov edx, dword [esp + 0x168]
mov esi, dword [edx + 0x110]
mov edi, dword [edx + 0x114]
mov eax, dword [edx + 0xac]
mov ecx, dword [edx + 0xb0]
add esi, dword [esp + 0x16c]
add edi, dword [esp + 0x170]
mov dword [esp + 0x154], ebx
lea ebx, [eax + eax]
lea ebp, [ecx + ecx]
imul esi, ebx
imul edi, ebp
cmp dword [esp + 0x1c], 0
je 0x3e2503
neg ebp
mov edx, dword [esp + 0x164]
cmp dword [edx + 0x1e0], 0
je 0x3e25b6
cmp eax, 8
jne 0x3e2524
cmp ecx, eax
je 0x3e25b6
cmp dword [esp + 0x44], 0xb
mov eax, dword [edx + 0x268]
ja 0x3e2559
cmp eax, 8
mov byte [esp + 0x1c], 0
je 0x3e2554
cmp eax, 0x10
je 0x3e254c
cmp eax, 0x20
jne case.0x3e2582.5
add esi, eax
add edi, 0x10
jmp case.0x3e2582.5
add esi, 0x10
add edi, 0x10
jmp case.0x3e2582.5
add esi, 0x10
jmp case.0x3e2582.5
cmp eax, 4
jle 0x3e256e
mov ecx, dword [esp + 0x160]
test byte [ecx + 0x12b5d], 0x40
jne 0x3e25b6
add eax, 0xfffffffe
cmp eax, 0x1e
mov byte [esp + 0x1c], 1
ja case.0x3e2582.5
movzx eax, byte [eax + 0x3e2934]
jmp dword [eax*4 + 0x3e2918]
add esi, 8
jmp case.0x3e2582.5
add esi, 4
add edi, 4
jmp case.0x3e2582.5
add esi, 8
add edi, 8
jmp case.0x3e2582.5
add esi, 0x18
add edi, 8
jmp case.0x3e2582.5
add esi, 0x18
add edi, 0x18
jmp case.0x3e2582.5
add esi, 0x38
add edi, 0x18
jmp case.0x3e2582.5
mov byte [esp + 0x1c], 0
mov eax, dword [esp + 0x160]
mov ecx, dword [eax + 0x12544]
test byte [ecx + 0x103b0], 1
je 0x3e2601
test byte [edx + 9], 1
je 0x3e2601
cmp dword [eax + 0x20c00], 0
jbe 0x3e2601
mov edx, dword [eax + 0x20c4c]
mov ecx, dword [eax + 0x20c08]
mov dword [esp + 0x28], edx
mov edx, dword [eax + ecx*4 + 0x20c0c]
push edx
push eax
call fcn.003b7810
add esp, 8
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x178]
push 0x80
push eax
mov eax, dword [esp + 0x17c]
push ecx
mov ecx, dword [esp + 0x198]
push 0
push ebp
push ebx
push edx
mov edx, dword [esp + 0x1a4]
push eax
mov eax, dword [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x38]
push edi
push esi
push eax
mov eax, dword [esp + 0x4c]
push ecx
push edx
push eax
mov eax, dword [esp + 0x1a0]
lea ecx, [esp + 0x114]
push ecx
mov ecx, dword [0x3fa0b8]
lea edx, [esp + 0x90]
push edx
push eax
call dword [eax + ecx*4 + fcn.000128ec]
mov ebx, dword [esp + 0x1ac]
add esp, 0x4c
cmp dword [esp + 0x28], 0
je 0x3e268e
mov edx, dword [esp + 0x28]
push edx
push ebx
call fcn.003b7810
add esp, 8
mov ecx, dword [ebx + 0x12854]
mov edi, dword [esp + 0x17c]
xor esi, esi
cmp ecx, esi
je 0x3e26dc
test byte [edi + 0xe1], 1
je 0x3e26dc
mov edx, dword [esp + 0x174]
mov ebp, dword [esp + 0x188]
mov eax, dword [edi + 0x68]
add edx, ebp
cmp edx, eax
jne 0x3e26dc
test al, 1
je 0x3e26dc
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x18c]
push eax
push edx
push edi
push ebx
call ecx
add esp, 0x10
mov ecx, dword [ebx + 0x12544]
mov eax, dword [ecx + 0x103b0]
test al, 1
je 0x3e2870
test eax, 0x20000
je 0x3e2870
test byte [ecx + 0x10751], 0x80
je 0x3e2870
test byte [edi + 0xe0], 8
je 0x3e2715
xor eax, eax
jmp 0x3e271b
lea eax, [edi - 0xa0]
mov edx, 1
cmp dword [edi + 0x2e0], edx
jne 0x3e27f2
cmp dword [eax + 0x80], 3
je 0x3e27f2
cmp dword [edi + 0x70], edx
jne 0x3e27f2
mov eax, dword [edi + 0x6fc]
cmp eax, dword [ebx + 0x20c08]
lea esi, [edi + 0x6ec]
je 0x3e2765
xor ecx, ecx
mov edx, esi
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ecx
mov eax, dword [esp + 0x188]
mov edx, dword [esp + 0x174]
mov ecx, dword [esp + 0x18c]
add edx, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x178]
add eax, ecx
mov dword [esp + 0x30], ecx
mov ecx, esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], eax
call fcn.0039a290
test eax, eax
jne 0x3e27ad
lea ecx, [esp + 0x2c]
mov eax, esi
mov edx, ecx
call fcn.003a5cc0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esi], ecx
mov ecx, dword [esp + 0x38]
mov dword [esi + 4], edx
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
or byte [edi + 0xe3], 4
mov edx, dword [ebx + 0x20c08]
mov dword [edi + 0x6fc], edx
mov eax, dword [ebx + 0x20c00]
mov dword [edi + 0x700], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14c
ret
mov ecx, dword [ecx + 0x103a4]
mov eax, edx
shl eax, cl
sub eax, edx
cmp dword [esp + 0xe0], esi
jg 0x3e281b
mov ecx, dword [esp + 0x20]
shl edx, cl
imul edx, dword [edi + 0xa8]
mov dword [esp + 0xe0], edx
mov edx, dword [esp + 0x178]
mov ecx, dword [esp + 0x174]
mov dword [esp + 0x38], edx
lea edx, [esp + 0x2c]
push edx
lea edx, [esp + 0xd8]
push edx
push edx
mov dword [esp + 0x40], ecx
mov ecx, dword [ebx + 0x20c08]
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], esi
mov edx, dword [ebx + ecx*4 + 0x20c0c]
not edx
and edx, eax
mov eax, dword [ebx + ecx*4 + 0x20c1c]
push edx
push eax
push ebx
call fcn.003bc350
push ebx
call fcn.003bcd30
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14c
ret