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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xcc
mov ebp, edx
mov esi, ecx
mov ebx, dword [esp + 0xe8]
mov edx, dword [ebx]
mov edi, dword [ebx + 8]
mov ecx, ebx
mov dword [esp + 0x90], edx
call fcn.0044a98f
mov ecx, edi
mov ebx, dword [ebx + 8]
cmp ebx, ecx
jb 0x410fc4
xor edi, edi
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x34], edx
sub ebx, ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], ecx
je 0x40fd1c
mov dword [esp + 0x38], eax
mov bl, byte [esp + 0xec]
mov dword [esp + 0x3c], ebp
mov esi, dword [ebp + 0x10]
mov eax, dword [esi]
cmp bl, 4
sete dl
cmp eax, 1
jne 0x40fd2e
xor eax, eax
inc eax
cmp bl, 4
mov ecx, 0xfffffffb
cmove ecx, eax
xor ebx, ebx
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
jmp 0x40fd25
mov ecx, 0xfffffffb
xor ebx, ebx
xor edx, edx
mov esi, dword [esp + 0x34]
jmp 0x410e1b
mov dword [esp], eax
mov ebp, dword [esp + 0xe0]
mov edx, dword [esp + 0xe8]
mov eax, ebx
mov ebx, dword [edx + 4]
add ebx, ecx
movzx ecx, al
mov ecx, dword [ecx*4 + 0x4a563c]
add ecx, 0xfffffffe
mov edx, ecx
add dl, 2
xor edi, edi
cmp ecx, 3
mov ecx, dword [esp + 0xe4]
movzx eax, dl
mov edx, ebx
cmovae eax, edi
mov dword [esp + 0x60], eax
lea eax, [esi + 0x58]
mov dword [esp + 0x50], eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x40], 0
mov edi, esi
mov dword [esp + 0x14], esi
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x94], edx
mov eax, dword [esp + 0x60]
cmp al, 4
mov esi, ecx
sete cl
mov dword [esp + 0x44], ebp
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa8], esi
mov ebp, edx
xor edx, edx
mov dword [esp + 0xac], edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x98], 1
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], ebx
mov dword [edi + 0x28], edx
mov dword [edi + 0x24], edx
cmp byte [edi + 0x36], 4
setne dl
mov byte [edi + 0x36], al
cmp dword [esp], 0
jne 0x410dd2
or cl, dl
je 0x410dd2
mov dword [esp + 0x64], ebx
cmp dword [edi + 0x1c], 0
jne 0x40fe16
cmp byte [edi + 0x35], 0
je 0x40feb3
lea ebx, [esp + 0xb4]
mov ecx, ebx
lea edx, [esp + 0x98]
push edi
call fcn.00448bca
add esp, 4
mov ecx, ebx
mov ebp, dword [ebx]
mov dword [edi], ebp
mov ebx, dword [ebx + 4]
mov ecx, dword [ecx + 8]
mov eax, esi
sub eax, ebx
jb 0x410f6d
mov edx, dword [esp + 0x64]
mov esi, edx
sub esi, ecx
jb 0x410f7b
add dword [esp + 0x30], ebx
add dword [esp + 0x40], ecx
cmp ebp, 0xfffffffe
je 0x410de0
cmp ebp, 0xffffffff
je 0x410deb
cmp ebp, 1
je 0x410df8
test esi, esi
je 0x410e03
mov dword [esp], ebp
mov edx, dword [esp + 0x94]
mov ebp, dword [esp + 0x44]
add ebp, ebx
add edx, ecx
mov ebx, esi
mov ecx, eax
cmp byte [esp + 0xec], 4
je 0x40fd91
mov ebx, esi
mov ecx, eax
test eax, eax
jne 0x40fd91
jmp 0x410e8e
mov eax, dword [edi + 8]
mov ecx, 0xb4fff
and eax, ecx
cmp eax, 0x4001
mov dword [esp + 0x10], esi
jne 0x4104ac
mov ebx, dword [edi + 0x4c]
cmp dword [esp + 0x44], 0
je 0x410c15
mov dword [esp + 0x1c], ebx
mov edx, dword [edi + 0x50]
mov ecx, edx
and ecx, 0x7fff
mov dword [esp], 0
mov eax, esi
sub eax, dword [esp]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0xc], edx
ja 0x40ff11
test ebp, ebp
je 0x410dbb
cmp byte [edi + 0x36], 0
je 0x410dbb
mov ebx, 0x1000
sub ebx, ebp
cmp eax, ebx
cmovb ebx, eax
test ebx, ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], ebx
je 0x410004
add ebp, edx
mov edi, dword [esp]
and ebp, 0x7fff
mov esi, 0x8000
sub esi, ebp
cmp esi, ebx
cmovae esi, ebx
lea ecx, [esi + ebp]
cmp ecx, 0x8103
jae 0x410f41
mov edx, esi
add edx, edi
jb 0x410f50
mov dword [esp + 0x20], ecx
mov dword [esp], edx
cmp edx, dword [esp + 0x10]
ja 0x410f5c
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x3c]
add eax, ebp
add eax, 0x20000
mov ecx, dword [esp + 0x44]
add ecx, edi
push esi
mov dword [esp + 0x28], ecx
push ecx
push eax
call fcn.0047eb10
add esp, 0xc
cmp ebp, 0x101
jae 0x40fff1
mov eax, 0x101
sub eax, ebp
cmp esi, eax
cmovb eax, esi
lea ecx, [eax + ebp]
add ecx, 0x8000
cmp ecx, 0x8103
jae 0x410f85
mov edx, eax
add edx, edi
jb 0x410f94
cmp edx, dword [esp + 0x10]
ja 0x410fa0
or ebp, 0x8000
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x3c]
add ecx, ebp
add ecx, 0x20000
push eax
push dword [esp + 0x28]
push ecx
call fcn.0047eb10
add esp, 0xc
mov eax, dword [esp]
mov edi, eax
sub ebx, esi
mov ebp, dword [esp + 0x20]
jne 0x40ff32
jmp 0x410007
mov eax, dword [esp]
mov dword [esp], eax
mov ebp, dword [esp + 0x2c]
add ebp, dword [esp + 0x1c]
mov eax, 0x8000
sub eax, ebp
mov edi, dword [esp + 0x14]
mov ecx, dword [edi + 0x54]
cmp eax, ecx
cmovae eax, ecx
mov dword [edi + 0x54], eax
cmp ebp, 0xfff
ja 0x41003a
cmp byte [edi + 0x36], 0
je 0x410da9
cmp ebp, 4
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x30], eax
jb 0x4103bd
mov dword [esp + 0x18], ecx
mov eax, ecx
and eax, 0x7fff
mov edx, dword [edi + 0x3c]
mov esi, dword [edx + eax + 0x20000]
mov ecx, esi
and ecx, 0xffffff
mov eax, ecx
shr eax, 0x11
mov dword [esp + 0x24], esi
and esi, 0xfff
xor esi, eax
movzx ebx, word [edx + esi*2 + 0x10000]
mov eax, dword [esp + 0xc]
mov word [edx + esi*2 + 0x10000], ax
sub eax, ebx
movzx edx, ax
cmp edx, dword [edi + 0x54]
jbe 0x4100ac
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
jmp 0x4103b4
mov dword [esp + 0x1c], edx
mov dword [esp + 8], eax
and ebx, 0x7fff
mov edx, edi
mov edi, dword [edi + 0x3c]
mov eax, dword [edi + ebx + 0x20000]
mov esi, 0xffffff
and eax, esi
cmp ecx, eax
jne 0x410207
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x18]
lea ecx, [eax + 3]
lea edx, [edi + eax]
add edx, 0x20003
mov dword [esp + 0x20], edx
lea edx, [eax + 0xb]
add ebx, edi
add ebx, 0x20003
xor ebp, ebp
cmp ecx, 0xfffffff7
ja 0x410f26
cmp edx, 0x8102
ja 0x410f30
mov esi, dword [ebx + ebp*8]
mov eax, dword [ebx + ebp*8 + 4]
mov edi, dword [esp + 0x20]
xor eax, dword [edi + ebp*8 + 4]
xor esi, dword [edi + ebp*8]
mov edi, esi
or edi, eax
jne 0x410241
inc ebp
add edx, 8
add ecx, 8
cmp ebp, 0x20
mov edi, dword [esp + 0x14]
jne 0x4100fa
mov ecx, 0x102
mov eax, dword [esp + 8]
test ax, ax
mov ebp, dword [esp + 0x2c]
je 0x410280
cmp ecx, ebp
cmovae ecx, ebp
mov edx, dword [edi + 0x10058]
cmp edx, 0x10000
jae 0x410ed1
lea ebx, [ecx - 3]
mov dword [esp + 0x20], ebx
mov byte [edi + edx + 0x58], bl
mov edx, dword [edi + 0x10058]
inc edx
mov dword [edi + 0x10058], edx
cmp edx, 0x10000
jae 0x410ed1
dec eax
mov byte [edi + edx + 0x58], al
mov edx, dword [edi + 0x10058]
inc edx
mov dword [edi + 0x10058], edx
cmp edx, 0x10000
jae 0x410ed1
movzx esi, ax
mov ebx, esi
shr ebx, 8
mov byte [edi + edx + 0x58], bl
inc dword [edi + 0x10058]
mov edx, dword [edi + 0x1005c]
cmp edx, 0x10000
jae 0x410ee2
mov dword [esp + 8], eax
shr byte [edi + edx + 0x58], 1
mov edx, dword [edi + 0x1005c]
cmp edx, 0x10000
jae 0x410ee2
mov eax, dword [esp + 0x50]
or byte [eax + edx], 0x80
cmp esi, 0x200
jae 0x4102c5
lea eax, [esi + 0x4a8500]
jmp 0x4102da
mov ecx, dword [edx + 0x10058]
cmp ecx, 0x10000
jae 0x410ed3
mov edi, edx
mov edx, dword [esp + 0x24]
mov byte [edi + ecx + 0x58], dl
inc dword [edi + 0x10058]
mov ecx, dword [edi + 0x1005c]
cmp ecx, 0x10000
jae 0x410ee4
mov eax, dword [esp + 0x50]
jmp 0x4102ba
bsf edx, esi
bsf eax, eax
add eax, 0x20
test esi, esi
cmovne eax, edx
shr eax, 3
sub ecx, dword [esp + 0x18]
add ecx, eax
cmp ecx, 3
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 8]
jb 0x410280
cmp dword [esp + 0x1c], 0x2000
jb 0x410151
cmp ecx, 3
jne 0x410151
mov ecx, dword [edi + 0x10058]
cmp ecx, 0x10000
jae 0x410ed3
mov eax, dword [esp + 0x24]
mov byte [edi + ecx + 0x58], al
inc dword [edi + 0x10058]
mov ecx, dword [edi + 0x1005c]
cmp ecx, 0x10000
mov eax, dword [esp + 0x50]
jae 0x410ee4
mov edx, dword [esp + 0x24]
shr byte [eax + ecx], 1
movzx eax, dl
xor ecx, ecx
inc ecx
jmp 0x41030a
movzx edx, bx
cmp word [esp + 8], 0
js 0x410f15
lea eax, [edx + 0x4a83f0]
movzx eax, byte [eax]
mov edx, dword [edi + 0x38]
inc word [edx + eax*2 + 0x240]
mov eax, dword [esp + 0x20]
cmp eax, 0x100
jae 0x410ef3
movzx eax, word [ecx + ecx + 0x4acbc2]
cmp eax, 0x120
jae 0x410f04
mov esi, ebp
mov edx, dword [edi + 0x38]
inc word [edx + eax*2]
dec dword [edi + 0x10064]
mov eax, dword [edi + 0x10058]
jne 0x410338
mov dword [edi + 0x10064], 8
mov dword [edi + 0x1005c], eax
inc eax
mov dword [edi + 0x10058], eax
mov ebp, dword [esp + 0xc]
add dword [edi + 0x10060], ecx
add ebp, ecx
mov edx, dword [edi + 0x54]
add edx, ecx
mov ebx, 0x8000
cmp edx, ebx
cmovae edx, ebx
mov dword [edi + 0x54], edx
mov edx, dword [esp + 0x18]
add edx, ecx
sub esi, ecx
mov ecx, edx
and ecx, 0x7fff
cmp eax, 0xfff8
jbe 0x4103aa
mov ebx, ecx
mov dword [edi + 0x4c], esi
mov dword [edi + 0x50], ebp
mov ecx, edi
lea edx, [esp + 0x98]
push 0
call fcn.00448ed2
add esp, 4
test eax, eax
jne 0x410d8f
test edx, edx
mov esi, dword [esp + 0x10]
jne 0x410c24
mov ebp, dword [edi + 0x4c]
mov ecx, dword [edi + 0x50]
mov dword [esp + 0xc], ecx
mov ecx, ebx
jmp 0x4103b4
mov dword [esp + 0xc], ebp
mov ebp, esi
mov esi, dword [esp + 0x10]
cmp ebp, 3
ja 0x410053
mov dword [esp + 0x1c], 0
test ebp, ebp
mov edx, dword [esp + 0xc]
je 0x40fef0
mov eax, dword [edi + 0x3c]
mov ebx, ecx
mov al, byte [eax + ecx + 0x20000]
inc dword [edi + 0x10060]
mov ecx, dword [edi + 0x10058]
cmp ecx, 0x10000
jae 0x410ed3
mov byte [edi + ecx + 0x58], al
inc dword [edi + 0x10058]
mov ecx, dword [edi + 0x1005c]
cmp ecx, 0x10000
jae 0x410ee4
shr byte [edi + ecx + 0x58], 1
dec dword [edi + 0x10064]
jne 0x41043a
mov dword [edi + 0x10064], 8
mov ecx, dword [edi + 0x10058]
mov dword [edi + 0x1005c], ecx
inc ecx
mov dword [edi + 0x10058], ecx
movzx eax, al
mov ecx, dword [edi + 0x38]
inc word [ecx + eax*2]
inc edx
mov eax, dword [edi + 0x54]
inc eax
mov ecx, 0x8000
cmp eax, ecx
cmovae eax, ecx
mov dword [edi + 0x54], eax
dec ebp
cmp dword [edi + 0x10058], 0xfff9
jb 0x410496
mov dword [edi + 0x4c], ebp
mov dword [edi + 0x50], edx
mov ecx, edi
lea edx, [esp + 0x98]
push 0
call fcn.00448ed2
add esp, 4
test eax, eax
jne 0x410c33
test edx, edx
jne 0x410c24
mov ecx, ebx
mov ebp, dword [edi + 0x4c]
mov edx, dword [edi + 0x50]
jmp 0x410498
mov ecx, ebx
inc ecx
and ecx, 0x7fff
test ebp, ebp
jne 0x4103d1
jmp 0x40fef0
mov ebx, dword [edi + 0x4c]
cmp dword [esp + 0x44], 0
je 0x410c15
mov eax, dword [edi + 0x50]
mov dword [esp + 0x18], eax
mov al, byte [edi + 0x37]
mov byte [esp + 7], al
mov eax, dword [edi + 0x10]
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 0x2c], eax
mov dword [esp], 0
mov eax, esi
sub eax, dword [esp]
ja 0x4104f6
test ebx, ebx
je 0x410c44
cmp byte [edi + 0x36], 0
je 0x410c44
mov ecx, 0x102
sub ecx, ebx
cmp eax, ecx
cmovb ecx, eax
mov ebp, dword [edi + 0x54]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x4105f5
lea eax, [ebx + ebp]
cmp eax, 1
jbe 0x4105f5
mov edx, dword [esp + 0x20]
mov ecx, dword [esp]
add edx, ecx
jb 0x410ff1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], edx
cmp edx, esi
ja 0x410ffb
mov eax, dword [esp + 0x18]
lea esi, [ebx + eax]
lea edi, [ebx + eax]
add edi, 0xfffffffe
mov eax, edi
mov ecx, 0x7fff
and eax, ecx
mov ecx, dword [esp + 0x14]
mov edx, ebx
mov ebx, dword [ecx + 0x3c]
movzx ebp, byte [ebx + eax + 0x20000]
mov eax, dword [esp + 0x18]
add eax, edx
dec eax
mov ecx, 0x7fff
and eax, ecx
movzx eax, byte [ebx + eax + 0x20000]
shl ebp, 5
xor ebp, eax
add edx, dword [esp + 0x20]
mov dword [esp + 0x1c], edx
mov eax, dword [esp]
add eax, dword [esp + 0x44]
mov dword [esp], eax
xor eax, eax
and esi, 0x7fff
mov ecx, dword [esp]
mov dl, byte [ecx + eax]
mov byte [ebx + esi + 0x20000], dl
cmp esi, 0x101
jae 0x4105b4
mov byte [ebx + esi + 0x28000], dl
movzx ecx, dl
shl ebp, 5
and ebp, 0x7fe0
movzx edx, cx
xor edx, ebp
mov ecx, edi
and ecx, 0x7fff
movzx ebp, word [ebx + edx*2 + 0x10000]
mov word [ebx + ecx*2], bp
mov word [ebx + edx*2 + 0x10000], di
inc esi
inc edi
inc eax
mov ebp, edx
cmp dword [esp + 0x20], eax
jne 0x410592
mov ebx, dword [esp + 0x24]
jmp 0x4106e4
mov edx, dword [esp + 0x20]
add edx, dword [esp]
mov eax, dword [esp + 0x44]
jb 0x41100d
cmp edx, esi
ja 0x41101a
cmp dword [esp + 0x20], 0
mov dword [esp + 0x1c], ebx
je 0x4109f0
mov dword [esp + 0x5c], edx
mov ecx, dword [esp]
add ecx, eax
mov eax, ecx
mov esi, dword [edi + 0x3c]
mov ecx, dword [esp + 0x18]
lea edx, [ebx + ecx]
lea ecx, [ebx + ecx - 2]
mov dword [esp + 0xc], ecx
mov ecx, edx
mov dword [esp + 0x28], ebp
lea edi, [ebx + ebp]
inc edi
xor ebx, ebx
mov dword [esp], eax
mov dword [esp + 8], edi
mov dl, byte [eax + ebx]
lea ebp, [ecx + ebx]
and ebp, 0x7fff
mov byte [esi + ebp + 0x20000], dl
cmp ebp, 0x101
jae 0x41066f
mov byte [esi + ebp + 0x28000], dl
lea ebp, [edi + ebx]
cmp ebp, 2
jbe 0x4106d1
movzx eax, dl
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0xc]
lea ebp, [edx + ebx]
mov edx, ebp
mov eax, 0x7fff
and edx, eax
mov edi, ecx
add ecx, ebx
dec ecx
and ecx, eax
movzx ecx, byte [esi + ecx + 0x20000]
shl ecx, 5
xor ecx, dword [esp + 0x24]
movzx eax, byte [esi + edx + 0x20000]
and eax, 0x1f
shl eax, 0xa
xor eax, ecx
movzx ecx, word [esi + eax*2 + 0x10000]
mov word [esi + edx*2], cx
mov ecx, edi
mov edi, dword [esp + 8]
mov word [esi + eax*2 + 0x10000], bp
mov eax, dword [esp]
inc ebx
cmp dword [esp + 0x20], ebx
jne 0x41064d
add dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
mov ecx, 0x8000
mov eax, dword [esp + 0x1c]
sub ecx, eax
cmp ecx, ebp
cmovae ecx, ebp
mov dword [esp + 0x20], ecx
mov dword [edi + 0x54], ecx
cmp eax, 0x101
ja 0x410718
cmp byte [edi + 0x36], 0
je 0x410c4b
mov dword [esp], ebx
mov ecx, dword [esp + 0x2c]
test ecx, ecx
mov eax, edi
mov edi, ecx
mov ecx, 2
cmove edi, ecx
mov ebp, dword [esp + 0x18]
and ebp, 0x7fff
mov ebx, dword [eax + 8]
test ebx, 0x90000
je 0x4107bb
mov dword [esp + 0xc], 0
cmp dword [esp + 0x20], 0
mov esi, dword [esp + 0x1c]
je 0x410a17
mov eax, ebx
and eax, 0x80000
jne 0x410a17
mov edx, esi
add edx, ebp
jb 0x411028
cmp edx, 0x8102
mov eax, dword [esp + 0x14]
ja 0x411034
test esi, esi
je 0x4109f7
mov ecx, dword [esp + 0x18]
dec ecx
and ecx, 0x7fff
mov eax, dword [eax + 0x3c]
mov cl, byte [eax + ecx + 0x20000]
add eax, 0x20000
add eax, ebp
xor edi, edi
cmp byte [eax + edi], cl
jne 0x4109f9
inc edi
cmp esi, edi
jne 0x4107a6
mov edi, esi
jmp 0x4109f9
mov eax, 0x102
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
mov esi, 0x102
cmovb esi, ecx
mov dword [esp + 0xc], 0
cmp esi, edi
jbe 0x410a17
xor eax, eax
cmp edi, 0x20
setae al
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax*4 + 0x40]
dec eax
je 0x410a17
mov dword [esp + 0x5c], eax
mov dword [esp + 0x6c], esi
mov eax, dword [ecx + 0x3c]
lea ecx, [eax + ebp]
add ecx, 0x20002
mov dword [esp + 0x74], ecx
movzx ecx, word [ecx - 2]
mov word [esp + 0x6a], cx
lea ecx, [ebp + edi]
movzx ecx, word [eax + ecx + 0x1ffff]
mov word [esp + 0x24], cx
mov ecx, 0x8100
sub ecx, ebp
and ecx, 0xfffffff8
mov dword [esp + 0x70], ecx
lea ecx, [ebp - 6]
mov dword [esp + 0x80], ecx
lea ecx, [eax + 0x20002]
mov dword [esp + 0x84], ecx
mov dword [esp + 0xc], 0
mov ecx, ebp
mov dword [esp + 8], ebp
mov dword [esp + 0x28], ebx
mov esi, 4
dec esi
je 0x4108d2
movzx ecx, word [eax + ecx*2]
test ecx, ecx
je 0x410a0f
mov ebx, dword [esp + 0x18]
sub ebx, ecx
movzx ebp, bx
cmp ebp, dword [esp + 0x20]
ja 0x410a0f
and ecx, 0x7fff
lea ebx, [ecx + edi]
dec ebx
cmp ebx, 0x8102
jae 0x410ebf
lea ebx, [ecx + edi]
mov edx, eax
movzx eax, word [esp + 0x24]
cmp word [edx + ebx + 0x1ffff], ax
mov eax, edx
jne 0x410863
test ebp, ebp
je 0x410a0f
movzx esi, word [esp + 0x6a]
cmp word [eax + ecx + 0x20000], si
mov ebx, dword [esp + 0x28]
je 0x4108e9
mov ebp, dword [esp + 8]
jmp 0x4108da
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x28]
dec dword [esp + 0x5c]
jne 0x41085e
jmp 0x410a17
mov edx, 0x8100
sub edx, ecx
and edx, 0xfffffff8
mov dword [esp + 0x54], edx
mov esi, dword [esp + 0x84]
add esi, ecx
mov dword [esp + 0x78], esi
xor edx, edx
cmp edx, 0x100
je 0x410bfc
mov esi, edx
cmp dword [esp + 0x70], edx
je 0x411045
mov edx, esi
mov dword [esp + 0x48], esi
cmp dword [esp + 0x54], esi
je 0x411057
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x48]
mov edx, dword [esi + ebx]
mov dword [esp + 0x58], edx
mov esi, dword [esi + ebx + 4]
mov edx, dword [esp + 0x74]
xor esi, dword [edx + ebx + 4]
mov dword [esp + 0x7c], esi
mov edx, dword [esp + 0x74]
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x48]
xor ebx, dword [edx + esi]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x58], ebx
mov edx, dword [esp + 0x48]
add edx, 8
mov ebx, dword [esp + 0x58]
or ebx, esi
mov ebx, dword [esp + 0x28]
je 0x410906
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0x48]
add edx, ebx
add edx, 8
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x58]
bsf ebx, edx
mov dword [esp + 0x48], ebx
bsf esi, esi
add esi, 0x20
test edx, edx
cmovne esi, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
sub edx, dword [esp + 8]
shr esi, 3
add esi, edx
mov ebx, dword [esp + 0x28]
cmp esi, edi
jbe 0x4109e0
mov edi, dword [esp + 0x6c]
cmp edi, esi
cmovb esi, edi
jbe 0x410c0d
mov edi, dword [esp + 8]
add edi, esi
movzx edi, word [eax + edi + 0x1ffff]
mov word [esp + 0x24], di
mov edi, esi
mov dword [esp + 0xc], ebp
dec dword [esp + 0x5c]
mov ebp, dword [esp + 8]
jne 0x41085e
jmp 0x410a17
mov ebx, edx
jmp 0x4106f0
xor edi, edi
xor eax, eax
cmp edi, 3
setae al
mov dword [esp + 0xc], eax
mov eax, 0
cmovb edi, eax
jmp 0x410a17
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x28]
cmp edi, 3
sete al
mov esi, dword [esp + 0xc]
cmp esi, 0x2000
setae cl
and cl, al
mov eax, ebx
shr eax, 0x11
cmp edi, 6
setb dl
and dl, al
cmp ebp, esi
sete al
or dl, cl
or dl, al
mov ecx, ebx
mov ebx, esi
mov eax, 0
cmovne ebx, eax
mov esi, edi
cmovne esi, eax
mov edx, dword [esp + 0x2c]
test edx, edx
je 0x410a9f
mov dword [esp + 8], ebp
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x38]
cmp esi, edx
mov ebp, dword [esp + 0x50]
jbe 0x410ac7
movzx eax, byte [esp + 7]
mov edx, ebp
push eax
call fcn.00448cb2
add esp, 4
cmp esi, 0x80
jb 0x410ae3
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x38]
mov edx, ebp
push ebx
push esi
call fcn.00448d37
add esp, 8
xor edx, edx
mov eax, edi
jmp 0x410add
test ebx, ebx
mov edx, dword [esp + 0x50]
je 0x410b06
mov edi, dword [esp + 0x14]
cmp byte [edi + 0x34], 0
je 0x410b28
mov ecx, dword [edi + 0x38]
push ebx
push esi
call fcn.00448d37
add esp, 8
xor edx, edx
mov eax, esi
jmp 0x410b57
mov esi, edx
mov edx, ebp
push dword [esp + 0x4c]
push esi
call fcn.00448d37
add esp, 8
dec esi
mov eax, esi
xor edx, edx
mov edi, dword [esp + 0x14]
jmp 0x410b57
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x3c]
mov edx, dword [esp + 8]
mov al, byte [eax + edx + 0x20000]
mov byte [esp + 7], al
xor eax, eax
inc eax
mov edx, edi
mov edi, ecx
mov dword [esp + 0x4c], ebx
jmp 0x410b57
mov edi, dword [esp + 0x14]
mov ecx, dword [edi + 0x38]
mov eax, dword [edi + 0x3c]
movzx eax, byte [eax + ebp + 0x20000]
push eax
call fcn.00448cb2
add esp, 4
xor edx, edx
xor eax, eax
inc eax
jmp 0x410b57
mov eax, ecx
bt ecx, 0x10
jb 0x410ab1
cmp esi, 0x80
jae 0x410ab1
mov eax, dword [edi + 0x3c]
mov al, byte [eax + ebp + 0x20000]
mov byte [esp + 7], al
xor eax, eax
inc eax
mov edx, esi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x1c]
sub ebx, eax
jb 0x410fb0
mov ecx, dword [edi + 0x54]
add ecx, eax
mov edx, 0x8000
cmp ecx, edx
cmovae ecx, edx
mov dword [edi + 0x54], ecx
mov ecx, dword [edi + 0x10058]
mov edx, dword [edi + 0x10060]
cmp edx, 0x7c01
jb 0x410ba9
mov ebp, ebx
mov bl, byte [edi + 0xa]
and bl, 8
shr bl, 3
imul esi, ecx, 0x73
shr esi, 7
cmp esi, edx
setae dl
or dl, bl
mov ebx, ebp
jmp 0x410bab
xor edx, edx
mov esi, dword [esp + 0x10]
add dword [esp + 0x18], eax
cmp ecx, 0xfff8
ja 0x410bc3
test dl, dl
je 0x4104dd
mov eax, dword [esp]
mov dword [edi + 0x24], eax
mov dword [edi + 0x4c], ebx
mov eax, dword [esp + 0x18]
mov dword [edi + 0x50], eax
mov ecx, edi
lea edx, [esp + 0x98]
push 0
call fcn.00448ed2
add esp, 4
neg eax
mov eax, 0
sbb eax, eax
or eax, edx
je 0x4104dd
jmp 0x410d68
mov dword [esp + 0xc], ebp
mov edi, dword [esp + 0x6c]
mov ebp, dword [esp + 8]
jmp 0x410a17
mov dword [esp + 0xc], ebp
mov edi, esi
jmp 0x410c04
xor ebp, ebp
xor eax, eax
mov ecx, dword [esp + 0x60]
xor edx, edx
jmp 0x410ce1
mov ebx, dword [esp]
mov dword [edi + 0x24], ebx
test edx, edx
jg 0x410c71
jmp 0x410d9f
mov dword [edi], 0xffffffff
mov ebx, dword [esp]
mov dword [edi + 0x24], ebx
jmp 0x410d9f
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp]
mov dword [edi + 0x24], ebx
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x4c], eax
mov eax, dword [esp + 0x18]
mov dword [edi + 0x50], eax
mov al, byte [esp + 7]
mov byte [edi + 0x37], al
mov eax, dword [esp + 0x4c]
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x14], eax
test byte [edi + 9], 0x30
je 0x410cce
mov dword [esp], ebx
cmp ebx, esi
ja 0x411065
mov esi, dword [edi + 0x20]
mov eax, dword [0x4c0b70]
test eax, eax
je 0x410db1
movzx eax, ax
shr eax, 0xf
mov ecx, esi
shr ecx, 0x10
test al, al
mov eax, 0x45f380
mov edx, 0x45f5b5
cmovne eax, edx
push dword [esp]
push dword [esp + 0x48]
push ecx
push esi
call eax
add esp, 0x10
movzx eax, ax
shl edx, 0x10
or edx, eax
mov dword [edi + 0x20], edx
mov eax, dword [edi + 0x24]
mov esi, dword [esp + 0x10]
jmp 0x410cd0
mov eax, ebx
cmp dword [edi + 0x1c], 0
mov cl, byte [edi + 0x36]
setne dl
mov ebp, edx
mov ebx, dword [edi + 0x4c]
mov edx, esi
test cl, cl
je 0x410d5c
test ebx, ebx
jne 0x410d5c
cmp edx, eax
jne 0x410d5c
mov eax, ebp
test al, al
jne 0x410d5c
movzx eax, cl
mov ecx, edi
lea edx, [esp + 0x98]
push eax
call fcn.00448ed2
add esp, 4
test eax, eax
je 0x410d20
mov dword [edi], 0xffffffff
mov ebx, dword [edi + 0x24]
mov ecx, dword [edi + 0x28]
xor ebp, ebp
dec ebp
jmp 0x40fe3b
test edx, edx
js 0x410d88
mov al, byte [edi + 0x36]
cmp al, 4
sete byte [edi + 0x35]
cmp al, 3
jne 0x410d5c
mov eax, dword [edi + 0x3c]
mov ebx, 0x10000
add eax, ebx
push ebx
xor esi, esi
push esi
push eax
call fcn.0047f090
add esp, 0xc
push ebx
push esi
push dword [edi + 0x3c]
call fcn.0047f090
add esp, 0xc
mov dword [edi + 0x54], esi
mov esi, dword [esp + 0x10]
lea ebx, [esp + 0xc0]
jmp 0x40fe1d
mov al, byte [esp + 7]
mov byte [edi + 0x37], al
mov eax, dword [esp + 0x4c]
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x14], eax
mov ebx, dword [edi + 0x24]
jg 0x410c71
jmp 0x410d9f
mov ebp, dword [edi]
mov ebx, dword [edi + 0x24]
jmp 0x410da1
mov ebx, dword [esp]
mov dword [edi + 0x24], ebx
mov dword [edi], 0xffffffff
mov esi, dword [esp + 0x10]
mov ebp, dword [edi]
mov ecx, dword [edi + 0x28]
jmp 0x40fe3b
mov eax, ebp
mov esi, dword [esp + 0x10]
jmp 0x410dbd
call fcn.00491760
jmp 0x410c92
mov eax, ebp
mov ebx, dword [esp]
mov dword [edi + 0x24], ebx
mov dword [edi + 0x4c], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x50], eax
jmp 0x410c71
mov eax, edi
mov edi, dword [esp + 0x40]
mov dword [eax], 0xfffffffe
jmp 0x410de4
mov edi, dword [esp + 0x40]
mov ecx, 0xffffd8f0
jmp 0x410df4
mov edi, dword [esp + 0x40]
mov ecx, 0xfffffffe
xor edx, edx
jmp 0x410e0b
mov edi, dword [esp + 0x40]
mov dl, 1
xor ecx, ecx
inc ecx
jmp 0x410e0b
mov edi, dword [esp + 0x40]
mov dl, 1
xor ecx, ecx
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
add dword [ebp], ebx
adc dword [ebp + 4], 0
add eax, edi
adc esi, 0
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], esi
cmp ecx, 0xfffffffb
setne al
add al, al
or al, 1
shl ecx, 3
mov esi, 0x30200
shr esi, cl
test dl, dl
movzx ebx, al
cmovne ebx, esi
mov edx, dword [esp + 0x8c]
add edx, edi
mov eax, dword [esp + 0x90]
cmp edx, eax
cmovae edx, eax
mov ecx, dword [esp + 0xe8]
call fcn.0044a98f
cmp bl, 3
je 0x410fd0
mov eax, dword [esp + 0x88]
mov byte [eax + 4], bl
mov dword [eax], 2
add esp, 0xcc
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x40]
mov edi, eax
test eax, eax
setne al
mov ebx, dword [esp + 0x30]
test ebx, ebx
setne cl
cmp byte [esp + 0xec], 0
setne dl
or dl, al
or dl, cl
movzx eax, dl
lea ecx, [eax + eax*4]
add ecx, 0xfffffffb
jmp 0x40fd12
xor ecx, ecx
dec ecx
mov edx, 0x8102
push 0x4a8090
call fcn.0048d350
mov ecx, edx
mov edx, 0x10000
push 0x4a83a0
call fcn.0048d350
mov ecx, edx
mov edx, 0x10000
push 0x4a83b0
call fcn.0048d350
mov ecx, eax
mov edx, 0x100
push 0x4a8ad0
call fcn.0048d350
mov ecx, eax
mov edx, 0x120
push 0x4a8ae0
call fcn.0048d350
mov ecx, edx
mov edx, 0x80
push 0x4a8ac0
call fcn.0048d350
push 0x4a8390
call fcn.0048d5c0
mov ecx, edx
mov edx, 0x8102
push 0x4a8390
call fcn.0048d3b0
mov edx, 0x8102
push 0x4a8af0
call fcn.0048d3b0
mov ecx, edi
push 0x4a8b00
call fcn.0048d5c0
mov ecx, dword [esp]
mov edx, dword [esp + 0x10]
push 0x4a8b00
call fcn.0048d3b0
mov ecx, ebx
mov edx, esi
push 0x4a8bb8
call fcn.0048d2f0
push 0x4a8bc8
call fcn.0048d2f0
mov edx, 0x8102
push 0x4a8b10
call fcn.0048d3b0
mov ecx, edi
push 0x4a8b20
call fcn.0048d5c0
mov ecx, edx
mov edx, dword [esp + 0x10]
push 0x4a8b20
call fcn.0048d3b0
mov ecx, str.assertion_failed:_lookahead_size___len_to_move
mov edx, 0x2f
push 0x4a8ab0
call fcn.0048d410
mov edx, ebx
push 0x4a5574
call fcn.0048d2f0
lea eax, [esp + 0x98]
mov ecx, 0x4b35f7
mov edx, 0x2b
push 0x4a5584
push 0x4a54bc
push eax
call fcn.0048d6c0
push 0x4a8a60
call fcn.0048d5c0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
push 0x4a8a60
call fcn.0048d3b0
mov ecx, dword [esp]
push 0x4a8a50
call fcn.0048d5c0
mov ecx, edx
mov edx, esi
push 0x4a8a50
call fcn.0048d3b0
mov ecx, ebp
push 0x4a8a70
call fcn.0048d5c0
mov ecx, edx
mov edx, 0x8102
push 0x4a8a70
call fcn.0048d3b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x70]
add ecx, eax
add ecx, 0xa
jmp 0x410f32
mov eax, dword [esp + 0x54]
add ecx, eax
add ecx, 0xa
jmp 0x410f32
mov ecx, dword [esp]
mov edx, dword [esp + 0x10]
push 0x4a8b50
call fcn.0048d3b0