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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov esi, ecx
mov eax, dword [0x501034]
xor eax, esp
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], 0x400
push 0
push 2
push 0x400
call fcn.004397d0
add esp, 0xc
mov dword [esp + 0x14], eax
push 0
push 0x14
push dword [esi + 0x12c]
call fcn.004397d0
add esp, 0xc
mov cl, byte [esi + 0xbe]
cmp cl, byte [esi + 0x135]
mov dword [esp + 0x20], eax
setne al
cmp byte [esi + 0xc4], 0
mov byte [esp + 0x10], al
je 0x40b934
cmp byte [esi + 0x134], 0
je 0x40b93e
mov eax, 0x40000000
cmp byte [esi + 0xc7], 0
jne 0x40b943
xor eax, eax
cmp byte [esi + 0x10d2], 0
sete al
shl eax, 0x1e
jmp 0x40b943
mov dword [esp + 0x68], 0
jmp 0x40b959
mov eax, 0x20000000
mov ecx, eax
or ecx, 0x10000000
cmp byte [esi + 0xae], 0
cmove ecx, eax
mov dword [esp + 0x68], ecx
mov edx, dword [esi + 0x94]
mov ebx, edx
sub ebx, dword [esi + 0x10]
mov ecx, esi
push 0
push 0x17c7
call fcn.0040e1b0
add esp, 8
mov edi, eax
mov ebp, dword [esi + 0x98]
mov ecx, esi
mov edx, eax
push ebx
call fcn.00411640
add esp, 4
test eax, eax
mov dword [esp], esi
mov dword [esp + 0x30], ebx
je 0x40b9a7
mov ecx, dword [esi + 0x10a4]
lea edx, [ebx + ebx*4]
mov ecx, dword [ecx + edx*4 + 0xc]
mov ebp, dword [ecx + ebp*4]
jmp 0x40b9aa
mov eax, dword [edi + 0x14]
mov esi, edi
mov edi, dword [esp + 0x20]
test ebp, ebp
jle 0x40b9cb
lea ecx, [ebp*4]
add ecx, ebp
xor edx, edx
cmp dword [eax + ecx*4], 0xdfff
sete dl
sub ebp, edx
mov dword [esp + 0x4c], ebp
cmp byte [esi + 0xc], 0
je 0x40b9e9
push dword [esi + 0x14]
call fcn.00439860
add esp, 4
push esi
call fcn.00439860
add esp, 4
mov eax, dword [esp]
mov ebp, eax
mov ecx, dword [eax + 0x20]
test ecx, ecx
js 0x40ba69
mov esi, ebp
mov eax, dword [ebp + 0x1c]
mov edx, dword [esp + 0x68]
cmp dword [ebp + 0x24], edx
jne 0x40ba0f
cmp ecx, dword [esp + 0x30]
jne 0x40ba0f
cmp eax, dword [esp + 0x4c]
je 0x40ba69
mov edx, dword [ebp + 0x18]
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx + 0x14]
lea edx, [eax + eax*4]
lea esi, [ecx + edx*4]
test eax, eax
jle 0x40ba34
cmp dword [esi], 0xdfff
jne 0x40ba34
or dword [esi - 0x10], 0x3ffff
mov eax, dword [ebp + 0x1c]
mov ebp, dword [ebp + 0x12c]
add ebp, 0xffffffff
cmp eax, ebp
jge 0x40ba51
cmp dword [esi + 0x14], 0xdfff
jne 0x40ba51
or dword [esi + 0x18], 0x3ffff
or dword [ecx + edx*4 + 4], 0x3ffff
mov eax, dword [esp]
mov ebp, eax
mov dword [eax + 0x24], 0
mov edi, dword [esp + 0x20]
mov eax, ebp
mov dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0x1c], 0xffffffff
cmp dword [ebp + 0x128], 0
jle 0x40c9b7
xor eax, eax
mov cl, byte [esp + 0x10]
mov al, cl
shl eax, 0x14
mov dword [esp + 0x6c], eax
xor eax, eax
jmp 0x40bad8
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x3c]
cmp byte [ebx + 0xc], 0
je 0x40bac2
push dword [ebx + 0x14]
call fcn.00439860
add esp, 4
push ebx
call fcn.00439860
add esp, 4
mov eax, dword [esp + 0x10]
add eax, 1
mov ebp, dword [esp]
cmp eax, dword [ebp + 0x128]
jge 0x40c9b7
mov edx, dword [ebp + 0x10]
add edx, eax
mov esi, eax
mov ecx, ebp
mov dword [esp + 0xc], edx
push 0
push 0x17fd
call fcn.0040e1b0
add esp, 8
mov ebx, eax
mov ecx, ebp
mov edx, eax
push esi
call fcn.00411640
add esp, 4
mov dword [esp + 0x38], eax
test eax, eax
mov dword [esp + 0x10], esi
mov edi, ebp
mov dword [esp + 0x3c], ebx
je 0x40bb30
mov eax, dword [edi + 0x10a4]
lea ecx, [esi + esi*4]
mov eax, dword [eax + ecx*4 + 0x10]
jmp 0x40bb39
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x38], eax
xor eax, eax
mov edx, dword [edi + 0x12c]
test edx, edx
jle 0x40c070
mov ecx, edx
xor ebp, ebp
xor ebx, ebx
mov edi, edx
mov dword [esp + 0x2c], eax
jmp 0x40bbaa
mov edx, dword [esp]
mov eax, dword [esp + 0x20]
mov dword [eax + ebp + 4], esi
mov esi, eax
mov eax, dword [esp + 4]
mov dword [esi + ebp], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [esi + ebp + 0xc], ecx
mov dword [esi + ebp + 8], eax
mov dword [esi + ebp + 0x10], 0
add ebx, 1
mov edi, dword [edx + 0x12c]
add ebp, 0x14
cmp ebx, edi
mov eax, dword [esp + 0x2c]
jge 0x40bee0
mov ecx, ebx
test eax, eax
je 0x40bbb3
mov ecx, dword [eax + ebx*4]
mov dword [esp + 8], ecx
mov eax, dword [esp + 0x38]
mov edx, dword [eax + ebp + 4]
mov ecx, edx
and ecx, 0xfffc0000
or ecx, 0x20500
mov esi, dword [esp]
cmp byte [esi + 0x10ad], 0
cmovne ecx, edx
cmp byte [esi + 0x110b], 0
jne 0x40bc2a
mov edx, ecx
and edx, 0x1ff
add edx, 0xfffffff0
mov esi, ecx
and esi, 0xfffffe00
or esi, 0x100
cmp edx, 0xf0
cmovae esi, ecx
mov edx, esi
shr edx, 9
and edx, 0x1ff
add edx, 0xfffffff0
mov ecx, esi
and ecx, 0xfffc01ff
or ecx, 0x20400
cmp edx, 0xf0
cmovae ecx, esi
mov edx, dword [esp]
cmp byte [edx + 0x110c], 0
je 0x40bc60
mov eax, dword [esp + 0x38]
mov edx, dword [eax + ebp + 8]
mov esi, dword [eax + ebp + 0xc]
mov dword [esp + 0x84], esi
mov dword [esp + 0x80], edx
jmp 0x40bc7a
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebp]
mov edx, eax
and edx, 0xffffff00
cmp edx, 0xda00
je 0x40bce0
cmp edx, 0xd900
je 0x40bcc0
cmp edx, 0xd800
jne 0x40bcf5
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x20c
jmp 0x40bcf2
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x60c
jmp 0x40bcf2
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0xc
movzx eax, word [edx]
add edi, 0xffffffff
cmp ebx, edi
mov dword [esp + 4], eax
jge 0x40bd16
mov eax, ecx
or eax, 0x400000
mov edx, dword [esp + 0x38]
cmp dword [edx + ebp + 0x14], 0xdfff
cmove ecx, eax
mov eax, dword [esp]
mov eax, dword [eax + 0xe28]
and eax, 0xfffffffe
cmp eax, 2
jne 0x40bdd0
mov eax, dword [esp]
cmp dword [eax + 0xe2c], 0
mov esi, dword [eax + 0xe34]
mov edx, dword [eax + 0xe38]
je 0x40bd7c
cmp esi, dword [esp + 0xc]
jg 0x40bdd0
cmp edx, dword [esp + 8]
jg 0x40bdd0
mov esi, ecx
xor esi, dword [esp + 0x6c]
xor eax, eax
mov edx, dword [esp]
mov edi, dword [esp + 0xc]
cmp edi, dword [edx + 0xe3c]
jg 0x40bdd8
mov edi, dword [esp + 8]
cmp edi, dword [edx + 0xe40]
jl 0x40bdc6
jmp 0x40bdd8
xor eax, eax
cmp edx, dword [esp + 8]
setle al
xor edx, edx
cmp esi, dword [esp + 0xc]
setl dl
cmove edx, eax
cmp dl, 1
jne 0x40bdd0
xor eax, eax
mov esi, dword [esp]
mov edx, dword [esp + 8]
cmp edx, dword [esi + 0xe40]
setl al
xor edx, edx
mov edi, dword [esp + 0xc]
cmp edi, dword [esi + 0xe3c]
setl dl
cmove edx, eax
mov esi, ecx
xor esi, dword [esp + 0x6c]
xor eax, eax
test dl, dl
je 0x40bdd8
mov eax, 0x100000
jmp 0x40bdd8
mov esi, ecx
xor esi, dword [esp + 0x6c]
xor eax, eax
xor esi, eax
mov eax, dword [esp]
cmp byte [eax + 0xc9], 0
je 0x40be30
and ecx, 0x200000
je 0x40be30
mov eax, dword [esp]
cmp byte [eax + 0x134], 0
mov ecx, dword [esp + 0x10]
je 0x40be1b
cmp byte [eax + 0xc8], 0
je 0x40be1b
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx eax, word [eax + 0x24c]
mov dword [esp + 4], eax
and esi, 0xffdfffff
jmp 0x40be34
mov ecx, dword [esp + 0x10]
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 4]
cmp edx, dword [eax + ebp]
jne 0x40be70
mov eax, dword [eax + ebp + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
mov ecx, dword [esp + 0x10]
jne 0x40be70
and eax, 0x800000
or esi, eax
jmp 0x40bea0
test esi, 0x400000
jne 0x40bea0
mov eax, dword [esp]
mov eax, dword [eax + 0x1064]
mov ecx, dword [eax]
push dword [esp + 4]
push eax
call dword [ecx + 0x10]
add esp, 8
mov ecx, esi
or ecx, 0x800000
cmp eax, 2
cmove esi, ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
cmp ecx, eax
jne 0x40bb60
mov eax, dword [esp + 0x4c]
cmp eax, ebx
jne 0x40bb60
mov ecx, eax
mov eax, dword [esp + 0x68]
or esi, eax
mov edx, dword [esp]
mov dword [edx + 0x24], eax
mov dword [edx + 0x1c], ecx
mov eax, dword [esp + 0x30]
mov dword [edx + 0x20], eax
jmp 0x40bb63
mov dword [esp + 0x2c], edi
test edi, edi
mov edi, dword [esp]
jle 0x40c070
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 4], 0
jmp 0x40bf33
lea eax, [ecx + ecx*4]
mov eax, dword [esi + eax*4 + 4]
mov dword [esp + 8], eax
mov bl, 1
lea eax, [ecx + ecx*4]
mov edx, dword [esp + 8]
or edx, 0x3ffff
mov dword [esi + eax*4 + 4], edx
mov eax, dword [edi + 0x12c]
add ecx, 1
mov dword [esp + 0x2c], eax
cmp ecx, eax
jge 0x40c070
mov edx, dword [edi + 0x18]
mov eax, dword [esp + 0x10]
mov edx, dword [edx + eax*4]
mov esi, dword [edx + 0x14]
lea edx, [ecx*4]
lea edx, [edx + edx*4]
mov ebp, dword [esi + edx]
mov edi, dword [esi + edx + 4]
test edi, edi
mov eax, dword [esp + 4]
cmovs eax, ecx
mov dword [esp + 4], eax
mov dword [esp + 0xc], ebx
movzx ebx, bl
mov eax, 0
cmovs ebx, eax
mov eax, dword [esp + 0x20]
cmp ebp, dword [eax + edx]
mov dword [esp + 8], edi
jne 0x40bfa0
and edi, 0xfffffff
lea ebp, [ecx + ecx*4]
mov dword [esp + 0xc], ebx
mov edx, ebx
and dl, 1
cmp edi, dword [eax + ebp*4 + 4]
je 0x40bfd9
test dl, dl
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
je 0x40bfac
jmp 0x40bfe0
mov eax, dword [esp + 0xc]
test bl, 1
mov edi, dword [esp]
jne 0x40bfd0
mov bl, 1
mov eax, ecx
mov edx, dword [esp + 4]
sub eax, edx
jle 0x40bf0d
lea ebx, [edx + 1]
test al, 1
jne 0x40bff1
mov eax, edx
jmp 0x40c00b
mov ebx, eax
mov edx, ebx
and dl, 1
jmp 0x40bfe0
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
test dl, dl
mov eax, dword [esp + 0x2c]
jne 0x40bf0d
jmp 0x40bf24
lea eax, [edx + edx*4]
or dword [esi + eax*4 + 4], 0x3ffff
mov eax, dword [edi + 0x18]
mov edx, dword [esp + 0x10]
mov eax, dword [eax + edx*4]
mov esi, dword [eax + 0x14]
mov eax, ebx
cmp ecx, ebx
mov ebp, dword [esp + 0x10]
je 0x40bf00
lea edx, [eax*4]
lea ebx, [edx + edx*4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
or dword [esi + ebx + 4], 0x3ffff
mov edx, dword [edi + 0x18]
mov edx, dword [edx + ebp*4]
mov edx, dword [edx + 0x14]
or dword [edx + ebx + 0x18], 0x3ffff
add eax, 2
mov edx, dword [edi + 0x18]
mov edx, dword [edx + ebp*4]
mov esi, dword [edx + 0x14]
add ebx, 0x28
cmp ecx, eax
jne 0x40c030
jmp 0x40bf00
mov eax, dword [esp + 0x3c]
movzx eax, word [eax]
mov ecx, dword [edi + 0x18]
mov edx, dword [esp + 0x10]
mov ecx, dword [ecx + edx*4]
cmp ax, word [ecx]
setne bl
mov word [ecx], ax
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x78]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], eax
cmp dword [edi + 0x12c], 0
jle 0x40baa0
mov edx, ecx
shr edx, 0x10
mov dword [esp + 0x54], edx
mov edx, eax
shr edx, 0x10
mov dword [esp + 0x5c], edx
mov dword [esp + 0x40], ecx
shr ecx, 0x18
mov dword [esp + 0x50], ecx
mov dword [esp + 0xc], eax
shr eax, 0x18
mov dword [esp + 0x58], eax
xor ebp, ebp
mov dword [esp + 0x70], 0
xor edx, edx
mov dword [esp + 0x60], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x1c], ebx
mov eax, ebx
mov dword [esp + 0x74], eax
mov esi, edi
mov ecx, dword [esp + 0x10]
jmp 0x40c16d
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov esi, ebp
mov ebp, dword [eax + ecx*4]
lea ecx, [esi + esi*4]
shl ecx, 2
add ecx, dword [ebp + 0x14]
mov ebx, dword [esp + 0x44]
mov edx, ebx
call fcn.004188e0
mov ecx, dword [esp + 0x1c]
movzx ecx, cl
test al, al
mov eax, 1
cmove ecx, eax
mov dword [esp + 0x1c], ecx
mov ecx, ebp
mov ebp, esi
mov edx, esi
push ebx
call fcn.00417260
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, dword [esp + 4]
add ebp, 1
mov esi, dword [esp]
cmp ebp, dword [esi + 0x12c]
jge 0x40c940
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
lea eax, [ebp*4]
lea ebp, [eax + eax*4]
mov edi, dword [esp + 0x20]
mov ebx, dword [edi + ebp + 4]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [eax + ebp + 4]
mov ecx, eax
xor ecx, ebx
test ecx, 0x400000
mov edx, dword [esp + 0x74]
movzx edx, dl
mov ecx, 1
cmovne edx, ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x2c], ebx
mov ecx, ebx
xor ecx, dword [esp + 0x48]
test dword [esi + 0x104c], ecx
setne cl
mov edx, dword [esp + 0xc]
cmp byte [edi + ebp + 8], dl
jne 0x40c220
mov edx, dword [esp + 8]
lea edx, [edx + edx*4]
mov ebx, dword [esp + 0xc]
cmp byte [edi + edx*4 + 9], bh
jne 0x40c220
mov ebx, dword [esp + 0x5c]
cmp byte [edi + edx*4 + 0xa], bl
jne 0x40c220
mov ebx, dword [esp + 0x58]
cmp byte [edi + edx*4 + 0xb], bl
jne 0x40c220
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xc], bl
jne 0x40c220
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xd], bh
jne 0x40c220
mov ebx, dword [esp + 0x54]
cmp byte [edi + edx*4 + 0xe], bl
jne 0x40c220
mov ebx, dword [esp + 0x50]
cmp byte [edi + edx*4 + 0xf], bl
je 0x40c222
nop
mov cl, 1
mov dword [esp + 0x64], ebp
mov edi, dword [edi + ebp]
lea edx, [edi - 0x23ba]
cmp edx, 4
mov edx, dword [esp + 8]
jb 0x40c253
test edx, edx
jle 0x40c255
lea edx, [edx + edx*4]
mov esi, dword [esp + 0x20]
mov edx, dword [esi + edx*4 - 0x14]
mov esi, 0xffffdc46
add edx, esi
cmp edx, 3
ja 0x40c255
mov cl, 1
mov edx, edi
and edx, 0xfffffc00
mov esi, edi
and esi, 0xfffffe00
mov ebx, edi
and ebx, 0xffffff00
cmp esi, 0xdc00
mov ebp, dword [esp + 8]
mov esi, 0
cmove esi, ebx
cmp edx, 0xd800
cmove esi, ebx
mov dword [esp + 0x7c], esi
cmp esi, dword [esp + 0x78]
movzx edx, cl
mov ecx, 1
cmovne edx, ecx
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x64]
add ecx, esi
lea ebx, [ebp*4]
add ebx, ebp
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], esi
cmp dword [esi + ebx*4 + 0x10], 0
mov esi, ebp
je 0x40c410
mov dl, 1
cmp dword [ecx], 0xdffe
mov ebp, dword [esp + 0x20]
jne 0x40c2e0
mov dl, 1
jmp 0x40c300
cmp esi, 2
jl 0x40c300
cmp dword [ecx - 0x14], 0xdfff
jne 0x40c300
cmp dword [ecx - 0x28], 0xdffe
je 0x40c2d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x44], ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x106c]
mov cl, byte [ecx]
mov ebx, dword [esp + 0x74]
and bl, 1
mov ch, cl
or ch, bl
mov dword [esp + 0x28], edi
mov byte [esp + 0x27], bl
jne 0x40c3e0
mov esi, ebp
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
cmp dword [ebp + ebx*4], edi
mov ebx, ebp
jne 0x40c450
and eax, 0xfffffff
cmp eax, dword [esp + 0x2c]
jne 0x40c450
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 8], al
mov ebp, esi
jne 0x40c460
cmp byte [ebx + edi*4 + 9], ah
jne 0x40c460
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xa], al
jne 0x40c460
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xb], al
mov edi, dword [esp + 0x34]
jne 0x40c460
mov eax, dword [esp + 0x40]
cmp byte [ebx + edi*4 + 0xc], al
jne 0x40c460
cmp byte [ebx + edi*4 + 0xd], ah
jne 0x40c460
mov eax, dword [esp + 0x54]
cmp byte [ebx + edi*4 + 0xe], al
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
jne 0x40c45a
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xf], al
mov eax, dword [esp + 0x1c]
je 0x40c3ec
jmp 0x40c45a
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
test dl, dl
je 0x40c430
test al, 1
je 0x40c485
mov al, 1
mov dword [esp + 0xc], eax
cmp dword [esp + 4], 0
jg 0x40c49f
jmp 0x40c4ee
test esi, esi
jle 0x40c2c5
cmp dword [ecx - 4], 0
jne 0x40c2c3
jmp 0x40c2c5
mov byte [esp + 0x27], al
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x64]
jmp 0x40c564
mov eax, dword [esp + 0x1c]
mov ebp, esi
mov esi, dword [esp + 8]
test al, 1
je 0x40c470
jmp 0x40c3e8
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
test al, 1
jne 0x40c3e8
cmp dword [esp + 4], 1
jne 0x40c3e8
mov dl, 1
mov dword [esp + 0xc], edx
test al, 1
jne 0x40c49f
test byte [esp + 0x70], 1
je 0x40c8cd
mov dword [esp + 0xc], 0
cmp dword [esp + 4], 0
jle 0x40c4ee
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp]
mov ecx, ebx
mov edx, dword [esp + 0x3c]
push esi
mov ebp, dword [esp + 0x24]
push eax
push dword [esp + 0x50]
push dword [esp + 0x10]
push dword [esp + 0x24]
mov esi, dword [esp + 0x24]
push esi
push dword [esp + 0x78]
call fcn.00418730
add esp, 0x1c
mov eax, dword [ebx + 0x106c]
mov cl, byte [eax]
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 8]
mov ebx, dword [eax + 0x14]
mov edi, dword [esp + 0x64]
lea eax, [edi + ebp]
add eax, 8
mov edx, dword [eax]
mov ebp, ebx
mov ebx, dword [eax + 4]
mov dword [esp + 0x84], ebx
mov dword [esp + 0x80], edx
test cl, cl
movzx eax, byte [esp + 0x70]
movzx ecx, byte [esp + 0xc]
cmove ecx, eax
mov dword [esp + 0x70], ecx
mov ecx, ebx
mov ebx, ebp
mov eax, ecx
shr eax, 0x10
mov dword [esp + 0x54], eax
mov eax, edx
shr eax, 0x10
mov dword [esp + 0x5c], eax
mov eax, ecx
shr eax, 0x18
mov dword [esp + 0x50], eax
mov eax, edx
shr eax, 0x18
mov dword [esp + 0x58], eax
mov dword [esp + 4], 0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x60], esi
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x78], eax
mov dword [esp + 0xc], edx
mov al, byte [ebx + edi + 8]
mov dl, 1
mov dword [esp + 0x1c], edx
mov ebp, dword [esp + 0x38]
cmp al, byte [ebp + edi + 8]
mov dword [esp + 0x40], ecx
jne 0x40c600
mov al, byte [ebx + edi + 9]
cmp al, byte [ebp + edi + 9]
jne 0x40c600
mov al, byte [ebx + edi + 0xa]
cmp al, byte [ebp + edi + 0xa]
jne 0x40c600
mov al, byte [ebx + edi + 0xb]
cmp al, byte [ebp + edi + 0xb]
jne 0x40c600
mov al, byte [ebx + edi + 0xc]
cmp al, byte [ebp + edi + 0xc]
jne 0x40c600
mov al, byte [ebx + edi + 0xd]
cmp al, byte [ebp + edi + 0xd]
jne 0x40c600
mov al, byte [ebx + edi + 0xe]
cmp al, byte [ebp + edi + 0xe]
jne 0x40c600
mov al, byte [ebx + edi + 0xf]
cmp al, byte [ebp + edi + 0xf]
jne 0x40c600
lea eax, [ebx + edi]
mov edi, dword [esp + 0x28]
cmp dword [eax], edi
jne 0x40c5ed
mov ecx, dword [esp + 0x34]
mov ecx, dword [ebx + ecx*4 + 4]
xor ecx, dword [esp + 0x2c]
test ecx, 0xfffffff
je 0x40c8da
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x14]
jmp 0x40c614
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
push 0
push 2
push ebx
push 2
lea eax, [esp + 0x98]
push eax
push ecx
call fcn.00439870
add esp, 0x18
lea ecx, [edi - 0x10001]
cmp ecx, 0xffffe
ja 0x40c670
mov edx, edi
add edi, 0x3ff0000
shr edi, 0xa
add edi, 0xffffd800
lea ecx, [ebx + 1]
and edx, 0x3ff
or edx, 0xdc00
mov word [eax + ebx*2 + 2], dx
jmp 0x40c672
mov ecx, ebx
mov edx, dword [esp + 0x34]
lea edx, [edx*4 + 0x10]
add edx, ebp
mov dword [esp + 0x14], eax
mov word [eax + ebx*2], di
add ecx, 1
mov edi, ecx
mov eax, dword [edx]
test eax, eax
je 0x40c7b0
mov esi, dword [esp + 0x44]
mov edx, edi
jmp 0x40c6c0
mov edx, ebx
mov ecx, edi
mov dword [esp + 0x14], eax
mov word [eax + edi*2], dx
mov eax, dword [esi + ebp*4 + 0x10]
lea esi, [esi + ebp*4]
mov edx, ecx
add edx, 1
test eax, eax
je 0x40c790
lea ebp, [eax + eax*4]
mov ebx, dword [esi + ebp*4]
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x40c720
cmp eax, 0xd900
je 0x40c700
cmp eax, 0xd800
jne 0x40c735
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x20c
jmp 0x40c732
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x60c
jmp 0x40c732
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0xc
movzx ebx, word [eax]
push 0
push 2
push edx
push 2
lea eax, [esp + 0x98]
push eax
push dword [esp + 0x28]
mov edi, edx
call fcn.00439870
add esp, 0x18
lea ecx, [ebx - 0x10001]
cmp ecx, 0xffffe
ja 0x40c6a0
lea edx, [ebx + 0x3ff0000]
shr edx, 0xa
add edx, 0xffffd800
lea ecx, [edi + 1]
and ebx, 0x3ff
or ebx, 0xdc00
mov word [eax + edi*2 + 2], bx
jmp 0x40c6a4
or dword [esp + 0x48], 0x80000000
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
jmp 0x40c7ba
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov edx, edi
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x18]
test bl, bl
jne 0x40c872
mov dword [esp + 4], edx
mov edi, dword [esp]
mov eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x10]
mov ecx, dword [eax + ecx*4]
mov edx, ebp
push dword [esp + 0x44]
call fcn.00417260
mov ecx, dword [esp + 0x14]
add esp, 4
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov esi, ebp
mov ebp, dword [esp + 0x64]
mov edx, dword [esp + 0x28]
mov dword [eax + ebp], edx
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [eax + ebp + 4], edx
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov ebx, dword [esp + 0x40]
mov dword [eax + ebp + 0xc], ebx
mov edx, dword [esp + 0xc]
mov dword [eax + ebp + 8], edx
mov ebp, esi
mov eax, ebx
shr eax, 0x10
mov dword [esp + 0x54], eax
mov eax, edx
shr eax, 0x10
mov dword [esp + 0x5c], eax
shr ebx, 0x18
mov dword [esp + 0x50], ebx
shr edx, 0x18
mov dword [esp + 0x58], edx
cmp dword [esp + 0x60], esi
jne 0x40c86a
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 0x34]
or dword [eax + edx*4 + 4], 0x80000000
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 4]
test dword [esp + 0x2c], 0x400000
je 0x40c15b
add ebp, 1
mov edi, dword [esp]
cmp ebp, dword [edi + 0x12c]
jge 0x40c15b
mov dword [esp + 4], edx
add dword [esp + 0x44], 0x14
cmp ecx, eax
jne 0x40c110
cmp ebp, dword [esp + 0x4c]
jne 0x40c110
push 0x1921
push str._home_simon_mem_.build_workdirs_bob_u160jzna_putty_terminal_terminal.c
push str.__i__our_curs_y__j__our_curs_x_
call fcn.004aeeb3
mov ecx, dword [esp + 0x1c]
add esp, 0xc
jmp 0x40c110
mov dword [esp + 0xc], 0
jmp 0x40c4ee
mov ecx, dword [esp + 0x44]
nop
nop
mov esi, dword [eax + 0x10]
mov edx, dword [ecx + 0x10]
test edx, edx
sete bl
test esi, esi
je 0x40c916
test edx, edx
je 0x40c5ed
lea esi, [esi + esi*4]
mov ebx, dword [eax + esi*4]
lea eax, [eax + esi*4]
lea edx, [edx + edx*4]
lea esi, [ecx + edx*4]
cmp ebx, dword [ecx + edx*4]
mov ebp, dword [esp + 0x38]
mov ecx, esi
je 0x40c8e0
jmp 0x40c5ed
mov dword [esp + 0x18], ebx
test edx, edx
movzx ecx, byte [esp + 0x27]
mov eax, 1
cmovne ecx, eax
mov dword [esp + 0x1c], ecx
jmp 0x40c5f5
test byte [esp + 0x1c], 1
je 0x40c9a0
test edx, edx
jle 0x40c9a0
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
mov ecx, dword [esp]
mov ebx, dword [esp + 0x3c]
mov edi, edx
mov edx, ebx
push esi
mov esi, dword [esp + 0x24]
push eax
push dword [esp + 0x50]
push edi
mov edi, esi
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x78]
call fcn.00418730
add esp, 0x1c
cmp byte [ebx + 0xc], 0
jne 0x40baae
jmp 0x40bac2
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x20]
cmp byte [ebx + 0xc], 0
jne 0x40baae
jmp 0x40bac2
push edi
call fcn.00439860
add esp, 4
push dword [esp + 0x14]
call fcn.00439860
add esp, 4
mov ecx, dword [esp + 0x8c]
xor ecx, esp
call fcn.0049f6f0
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret