Function at 0x40b8d0
Capabilities:
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov esi, ecx
mov eax, dword [0x500034]
xor eax, esp
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], 0x400
push 0
push 2
push 0x400
call fcn.004392c0
add esp, 0xc
mov dword [esp + 0x14], eax
push 0
push 0x14
push dword [esi + 0x12c]
call fcn.004392c0
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 0x40b964
cmp byte [esi + 0x134], 0
je 0x40b96e
mov eax, 0x40000000
cmp byte [esi + 0xc7], 0
jne 0x40b973
xor eax, eax
cmp byte [esi + 0x10d2], 0
sete al
shl eax, 0x1e
jmp 0x40b973
mov dword [esp + 0x68], 0
jmp 0x40b989
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 0x17ab
call fcn.0040e150
add esp, 8
mov edi, eax
mov ebp, dword [esi + 0x98]
mov ecx, esi
mov edx, eax
push ebx
call fcn.00411650
add esp, 4
test eax, eax
mov dword [esp], esi
mov dword [esp + 0x30], ebx
je 0x40b9d7
mov ecx, dword [esi + 0x10a4]
lea edx, [ebx + ebx*4]
mov ecx, dword [ecx + edx*4 + 0xc]
mov ebp, dword [ecx + ebp*4]
jmp 0x40b9da
mov eax, dword [edi + 0x14]
mov esi, edi
mov edi, dword [esp + 0x20]
test ebp, ebp
jle 0x40b9fb
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 0x40ba19
push dword [esi + 0x14]
call fcn.00439350
add esp, 4
push esi
call fcn.00439350
add esp, 4
mov eax, dword [esp]
mov ebp, eax
mov ecx, dword [eax + 0x20]
test ecx, ecx
js 0x40ba99
mov esi, ebp
mov eax, dword [ebp + 0x1c]
mov edx, dword [esp + 0x68]
cmp dword [ebp + 0x24], edx
jne 0x40ba3f
cmp ecx, dword [esp + 0x30]
jne 0x40ba3f
cmp eax, dword [esp + 0x4c]
je 0x40ba99
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 0x40ba64
cmp dword [esi], 0xdfff
jne 0x40ba64
or dword [esi - 0x10], 0x3ffff
mov eax, dword [ebp + 0x1c]
mov ebp, dword [ebp + 0x12c]
add ebp, 0xffffffff
cmp eax, ebp
jge 0x40ba81
cmp dword [esi + 0x14], 0xdfff
jne 0x40ba81
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 0x40c9e7
xor eax, eax
mov cl, byte [esp + 0x10]
mov al, cl
shl eax, 0x14
mov dword [esp + 0x6c], eax
xor eax, eax
jmp 0x40bb08
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x3c]
cmp byte [ebx + 0xc], 0
je 0x40baf2
push dword [ebx + 0x14]
call fcn.00439350
add esp, 4
push ebx
call fcn.00439350
add esp, 4
mov eax, dword [esp + 0x10]
add eax, 1
mov ebp, dword [esp]
cmp eax, dword [ebp + 0x128]
jge 0x40c9e7
mov edx, dword [ebp + 0x10]
add edx, eax
mov esi, eax
mov ecx, ebp
mov dword [esp + 0xc], edx
push 0
push 0x17e1
call fcn.0040e150
add esp, 8
mov ebx, eax
mov ecx, ebp
mov edx, eax
push esi
call fcn.00411650
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 0x40bb60
mov eax, dword [edi + 0x10a4]
lea ecx, [esi + esi*4]
mov eax, dword [eax + ecx*4 + 0x10]
jmp 0x40bb69
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x38], eax
xor eax, eax
mov edx, dword [edi + 0x12c]
test edx, edx
jle 0x40c0a0
mov ecx, edx
xor ebp, ebp
xor ebx, ebx
mov edi, edx
mov dword [esp + 0x2c], eax
jmp 0x40bbda
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 0x40bf10
mov ecx, ebx
test eax, eax
je 0x40bbe3
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 0x40bc5a
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 0x40bc90
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 0x40bcaa
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 0x40bd10
cmp edx, 0xd900
je 0x40bcf0
cmp edx, 0xd800
jne 0x40bd25
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x20c
jmp 0x40bd22
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x60c
jmp 0x40bd22
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 0x40bd46
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 0x40be00
mov eax, dword [esp]
cmp dword [eax + 0xe2c], 0
mov esi, dword [eax + 0xe34]
mov edx, dword [eax + 0xe38]
je 0x40bdac
cmp esi, dword [esp + 0xc]
jg 0x40be00
cmp edx, dword [esp + 8]
jg 0x40be00
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 0x40be08
mov edi, dword [esp + 8]
cmp edi, dword [edx + 0xe40]
jl 0x40bdf6
jmp 0x40be08
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 0x40be00
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 0x40be08
mov eax, 0x100000
jmp 0x40be08
mov esi, ecx
xor esi, dword [esp + 0x6c]
xor eax, eax
xor esi, eax
mov eax, dword [esp]
cmp byte [eax + 0xc9], 0
je 0x40be60
and ecx, 0x200000
je 0x40be60
mov eax, dword [esp]
cmp byte [eax + 0x134], 0
mov ecx, dword [esp + 0x10]
je 0x40be4b
cmp byte [eax + 0xc8], 0
je 0x40be4b
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx eax, word [eax + 0x24c]
mov dword [esp + 4], eax
and esi, 0xffdfffff
jmp 0x40be64
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 0x40bea0
mov eax, dword [eax + ebp + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
mov ecx, dword [esp + 0x10]
jne 0x40bea0
and eax, 0x800000
or esi, eax
jmp 0x40bed0
test esi, 0x400000
jne 0x40bed0
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 0x40bb90
mov eax, dword [esp + 0x4c]
cmp eax, ebx
jne 0x40bb90
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 0x40bb93
mov dword [esp + 0x2c], edi
test edi, edi
mov edi, dword [esp]
jle 0x40c0a0
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 4], 0
jmp 0x40bf63
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 0x40c0a0
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 0x40bfd0
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 0x40c009
test dl, dl
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
je 0x40bfdc
jmp 0x40c010
mov eax, dword [esp + 0xc]
test bl, 1
mov edi, dword [esp]
jne 0x40c000
mov bl, 1
mov eax, ecx
mov edx, dword [esp + 4]
sub eax, edx
jle 0x40bf3d
lea ebx, [edx + 1]
test al, 1
jne 0x40c021
mov eax, edx
jmp 0x40c03b
mov ebx, eax
mov edx, ebx
and dl, 1
jmp 0x40c010
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
test dl, dl
mov eax, dword [esp + 0x2c]
jne 0x40bf3d
jmp 0x40bf54
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 0x40bf30
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 0x40c060
jmp 0x40bf30
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 0x40bad0
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 0x40c19d
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.00418510
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.00416d90
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 0x40c970
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 0x40c250
mov edx, dword [esp + 8]
lea edx, [edx + edx*4]
mov ebx, dword [esp + 0xc]
cmp byte [edi + edx*4 + 9], bh
jne 0x40c250
mov ebx, dword [esp + 0x5c]
cmp byte [edi + edx*4 + 0xa], bl
jne 0x40c250
mov ebx, dword [esp + 0x58]
cmp byte [edi + edx*4 + 0xb], bl
jne 0x40c250
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xc], bl
jne 0x40c250
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xd], bh
jne 0x40c250
mov ebx, dword [esp + 0x54]
cmp byte [edi + edx*4 + 0xe], bl
jne 0x40c250
mov ebx, dword [esp + 0x50]
cmp byte [edi + edx*4 + 0xf], bl
je 0x40c252
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 0x40c283
test edx, edx
jle 0x40c285
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 0x40c285
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 0x40c440
mov dl, 1
cmp dword [ecx], 0xdffe
mov ebp, dword [esp + 0x20]
jne 0x40c310
mov dl, 1
jmp 0x40c330
cmp esi, 2
jl 0x40c330
cmp dword [ecx - 0x14], 0xdfff
jne 0x40c330
cmp dword [ecx - 0x28], 0xdffe
je 0x40c301
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 0x40c410
mov esi, ebp
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
cmp dword [ebp + ebx*4], edi
mov ebx, ebp
jne 0x40c480
and eax, 0xfffffff
cmp eax, dword [esp + 0x2c]
jne 0x40c480
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 8], al
mov ebp, esi
jne 0x40c490
cmp byte [ebx + edi*4 + 9], ah
jne 0x40c490
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xa], al
jne 0x40c490
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xb], al
mov edi, dword [esp + 0x34]
jne 0x40c490
mov eax, dword [esp + 0x40]
cmp byte [ebx + edi*4 + 0xc], al
jne 0x40c490
cmp byte [ebx + edi*4 + 0xd], ah
jne 0x40c490
mov eax, dword [esp + 0x54]
cmp byte [ebx + edi*4 + 0xe], al
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
jne 0x40c48a
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xf], al
mov eax, dword [esp + 0x1c]
je 0x40c41c
jmp 0x40c48a
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
test dl, dl
je 0x40c460
test al, 1
je 0x40c4b5
mov al, 1
mov dword [esp + 0xc], eax
cmp dword [esp + 4], 0
jg 0x40c4cf
jmp 0x40c51e
test esi, esi
jle 0x40c2f5
cmp dword [ecx - 4], 0
jne 0x40c2f3
jmp 0x40c2f5
mov byte [esp + 0x27], al
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x64]
jmp 0x40c594
mov eax, dword [esp + 0x1c]
mov ebp, esi
mov esi, dword [esp + 8]
test al, 1
je 0x40c4a0
jmp 0x40c418
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
test al, 1
jne 0x40c418
cmp dword [esp + 4], 1
jne 0x40c418
mov dl, 1
mov dword [esp + 0xc], edx
test al, 1
jne 0x40c4cf
test byte [esp + 0x70], 1
je 0x40c8fd
mov dword [esp + 0xc], 0
cmp dword [esp + 4], 0
jle 0x40c51e
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.00418360
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 0x40c630
mov al, byte [ebx + edi + 9]
cmp al, byte [ebp + edi + 9]
jne 0x40c630
mov al, byte [ebx + edi + 0xa]
cmp al, byte [ebp + edi + 0xa]
jne 0x40c630
mov al, byte [ebx + edi + 0xb]
cmp al, byte [ebp + edi + 0xb]
jne 0x40c630
mov al, byte [ebx + edi + 0xc]
cmp al, byte [ebp + edi + 0xc]
jne 0x40c630
mov al, byte [ebx + edi + 0xd]
cmp al, byte [ebp + edi + 0xd]
jne 0x40c630
mov al, byte [ebx + edi + 0xe]
cmp al, byte [ebp + edi + 0xe]
jne 0x40c630
mov al, byte [ebx + edi + 0xf]
cmp al, byte [ebp + edi + 0xf]
jne 0x40c630
lea eax, [ebx + edi]
mov edi, dword [esp + 0x28]
cmp dword [eax], edi
jne 0x40c61d
mov ecx, dword [esp + 0x34]
mov ecx, dword [ebx + ecx*4 + 4]
xor ecx, dword [esp + 0x2c]
test ecx, 0xfffffff
je 0x40c90a
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x14]
jmp 0x40c644
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.00439360
add esp, 0x18
lea ecx, [edi - 0x10001]
cmp ecx, 0xffffe
ja 0x40c6a0
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 0x40c6a2
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 0x40c7e0
mov esi, dword [esp + 0x44]
mov edx, edi
jmp 0x40c6f0
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 0x40c7c0
lea ebp, [eax + eax*4]
mov ebx, dword [esi + ebp*4]
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x40c750
cmp eax, 0xd900
je 0x40c730
cmp eax, 0xd800
jne 0x40c765
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x20c
jmp 0x40c762
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x60c
jmp 0x40c762
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.00439360
add esp, 0x18
lea ecx, [ebx - 0x10001]
cmp ecx, 0xffffe
ja 0x40c6d0
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 0x40c6d4
or dword [esp + 0x48], 0x80000000
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
jmp 0x40c7ea
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 0x40c8a2
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.00416d90
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 0x40c89a
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 0x40c18b
add ebp, 1
mov edi, dword [esp]
cmp ebp, dword [edi + 0x12c]
jge 0x40c18b
mov dword [esp + 4], edx
add dword [esp + 0x44], 0x14
cmp ecx, eax
jne 0x40c140
cmp ebp, dword [esp + 0x4c]
jne 0x40c140
push 0x1905
push str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_terminal_terminal.c
push str.__i__our_curs_y__j__our_curs_x_
call fcn.004adb03
mov ecx, dword [esp + 0x1c]
add esp, 0xc
jmp 0x40c140
mov dword [esp + 0xc], 0
jmp 0x40c51e
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 0x40c946
test edx, edx
je 0x40c61d
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 0x40c910
jmp 0x40c61d
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 0x40c625
test byte [esp + 0x1c], 1
je 0x40c9d0
test edx, edx
jle 0x40c9d0
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.00418360
add esp, 0x1c
cmp byte [ebx + 0xc], 0
jne 0x40bade
jmp 0x40baf2
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x20]
cmp byte [ebx + 0xc], 0
jne 0x40bade
jmp 0x40baf2
push edi
call fcn.00439350
add esp, 4
push dword [esp + 0x14]
call fcn.00439350
add esp, 4
mov ecx, dword [esp + 0x8c]
xor ecx, esp
call fcn.0049e340
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret