Function at 0x40bcd0
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 [0x483038]
xor eax, esp
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], 0x400
push 0
push 2
push 0x400
call fcn.004306d0
add esp, 0xc
mov dword [esp + 0x14], eax
push 0
push 0x14
push dword [esi + 0x12c]
call fcn.004306d0
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 0x40bd64
cmp byte [esi + 0x134], 0
je 0x40bd6e
mov eax, 0x40000000
cmp byte [esi + 0xc7], 0
jne 0x40bd73
xor eax, eax
cmp byte [esi + 0x10d2], 0
sete al
shl eax, 0x1e
jmp 0x40bd73
mov dword [esp + 0x68], 0
jmp 0x40bd89
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.0040e550
add esp, 8
mov edi, eax
mov ebp, dword [esi + 0x98]
mov ecx, esi
mov edx, eax
push ebx
call fcn.00411a50
add esp, 4
test eax, eax
mov dword [esp], esi
mov dword [esp + 0x30], ebx
je 0x40bdd7
mov ecx, dword [esi + 0x10a4]
lea edx, [ebx + ebx*4]
mov ecx, dword [ecx + edx*4 + 0xc]
mov ebp, dword [ecx + ebp*4]
jmp 0x40bdda
mov eax, dword [edi + 0x14]
mov esi, edi
mov edi, dword [esp + 0x20]
test ebp, ebp
jle 0x40bdfb
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 0x40be19
push dword [esi + 0x14]
call fcn.00430760
add esp, 4
push esi
call fcn.00430760
add esp, 4
mov eax, dword [esp]
mov ebp, eax
mov ecx, dword [eax + 0x20]
test ecx, ecx
js 0x40be99
mov esi, ebp
mov eax, dword [ebp + 0x1c]
mov edx, dword [esp + 0x68]
cmp dword [ebp + 0x24], edx
jne 0x40be3f
cmp ecx, dword [esp + 0x30]
jne 0x40be3f
cmp eax, dword [esp + 0x4c]
je 0x40be99
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 0x40be64
cmp dword [esi], 0xdfff
jne 0x40be64
or dword [esi - 0x10], 0x3ffff
mov eax, dword [ebp + 0x1c]
mov ebp, dword [ebp + 0x12c]
add ebp, 0xffffffff
cmp eax, ebp
jge 0x40be81
cmp dword [esi + 0x14], 0xdfff
jne 0x40be81
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 0x40cde7
xor eax, eax
mov cl, byte [esp + 0x10]
mov al, cl
shl eax, 0x14
mov dword [esp + 0x6c], eax
xor eax, eax
jmp 0x40bf08
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x3c]
cmp byte [ebx + 0xc], 0
je 0x40bef2
push dword [ebx + 0x14]
call fcn.00430760
add esp, 4
push ebx
call fcn.00430760
add esp, 4
mov eax, dword [esp + 0x10]
add eax, 1
mov ebp, dword [esp]
cmp eax, dword [ebp + 0x128]
jge 0x40cde7
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.0040e550
add esp, 8
mov ebx, eax
mov ecx, ebp
mov edx, eax
push esi
call fcn.00411a50
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 0x40bf60
mov eax, dword [edi + 0x10a4]
lea ecx, [esi + esi*4]
mov eax, dword [eax + ecx*4 + 0x10]
jmp 0x40bf69
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x38], eax
xor eax, eax
mov edx, dword [edi + 0x12c]
test edx, edx
jle 0x40c4a0
mov ecx, edx
xor ebp, ebp
xor ebx, ebx
mov edi, edx
mov dword [esp + 0x2c], eax
jmp 0x40bfda
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 0x40c310
mov ecx, ebx
test eax, eax
je 0x40bfe3
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 0x40c05a
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 0x40c090
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 0x40c0aa
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 0x40c110
cmp edx, 0xd900
je 0x40c0f0
cmp edx, 0xd800
jne 0x40c125
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x20c
jmp 0x40c122
mov edx, dword [esp]
mov edx, dword [edx + 0x106c]
movzx esi, al
lea edx, [edx + esi*2]
add edx, 0x60c
jmp 0x40c122
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 0x40c146
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 0x40c200
mov eax, dword [esp]
cmp dword [eax + 0xe2c], 0
mov esi, dword [eax + 0xe34]
mov edx, dword [eax + 0xe38]
je 0x40c1ac
cmp esi, dword [esp + 0xc]
jg 0x40c200
cmp edx, dword [esp + 8]
jg 0x40c200
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 0x40c208
mov edi, dword [esp + 8]
cmp edi, dword [edx + 0xe40]
jl 0x40c1f6
jmp 0x40c208
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 0x40c200
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 0x40c208
mov eax, 0x100000
jmp 0x40c208
mov esi, ecx
xor esi, dword [esp + 0x6c]
xor eax, eax
xor esi, eax
mov eax, dword [esp]
cmp byte [eax + 0xc9], 0
je 0x40c260
and ecx, 0x200000
je 0x40c260
mov eax, dword [esp]
cmp byte [eax + 0x134], 0
mov ecx, dword [esp + 0x10]
je 0x40c24b
cmp byte [eax + 0xc8], 0
je 0x40c24b
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx eax, word [eax + 0x24c]
mov dword [esp + 4], eax
and esi, 0xffdfffff
jmp 0x40c264
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 0x40c2a0
mov eax, dword [eax + ebp + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
mov ecx, dword [esp + 0x10]
jne 0x40c2a0
and eax, 0x800000
or esi, eax
jmp 0x40c2d0
test esi, 0x400000
jne 0x40c2d0
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 0x40bf90
mov eax, dword [esp + 0x4c]
cmp eax, ebx
jne 0x40bf90
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 0x40bf93
mov dword [esp + 0x2c], edi
test edi, edi
mov edi, dword [esp]
jle 0x40c4a0
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 4], 0
jmp 0x40c363
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 0x40c4a0
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 0x40c3d0
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 0x40c409
test dl, dl
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
je 0x40c3dc
jmp 0x40c410
mov eax, dword [esp + 0xc]
test bl, 1
mov edi, dword [esp]
jne 0x40c400
mov bl, 1
mov eax, ecx
mov edx, dword [esp + 4]
sub eax, edx
jle 0x40c33d
lea ebx, [edx + 1]
test al, 1
jne 0x40c421
mov eax, edx
jmp 0x40c43b
mov ebx, eax
mov edx, ebx
and dl, 1
jmp 0x40c410
mov edi, dword [esp]
mov ebx, dword [esp + 0xc]
test dl, dl
mov eax, dword [esp + 0x2c]
jne 0x40c33d
jmp 0x40c354
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 0x40c330
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 0x40c460
jmp 0x40c330
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 0x40bed0
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 0x40c59d
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.00418910
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.00417190
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 0x40cd70
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 0x40c650
mov edx, dword [esp + 8]
lea edx, [edx + edx*4]
mov ebx, dword [esp + 0xc]
cmp byte [edi + edx*4 + 9], bh
jne 0x40c650
mov ebx, dword [esp + 0x5c]
cmp byte [edi + edx*4 + 0xa], bl
jne 0x40c650
mov ebx, dword [esp + 0x58]
cmp byte [edi + edx*4 + 0xb], bl
jne 0x40c650
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xc], bl
jne 0x40c650
mov ebx, dword [esp + 0x40]
cmp byte [edi + edx*4 + 0xd], bh
jne 0x40c650
mov ebx, dword [esp + 0x54]
cmp byte [edi + edx*4 + 0xe], bl
jne 0x40c650
mov ebx, dword [esp + 0x50]
cmp byte [edi + edx*4 + 0xf], bl
je 0x40c652
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 0x40c683
test edx, edx
jle 0x40c685
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 0x40c685
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 0x40c840
mov dl, 1
cmp dword [ecx], 0xdffe
mov ebp, dword [esp + 0x20]
jne 0x40c710
mov dl, 1
jmp 0x40c730
cmp esi, 2
jl 0x40c730
cmp dword [ecx - 0x14], 0xdfff
jne 0x40c730
cmp dword [ecx - 0x28], 0xdffe
je 0x40c701
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 0x40c810
mov esi, ebp
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
cmp dword [ebp + ebx*4], edi
mov ebx, ebp
jne 0x40c880
and eax, 0xfffffff
cmp eax, dword [esp + 0x2c]
jne 0x40c880
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 8], al
mov ebp, esi
jne 0x40c890
cmp byte [ebx + edi*4 + 9], ah
jne 0x40c890
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xa], al
jne 0x40c890
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xb], al
mov edi, dword [esp + 0x34]
jne 0x40c890
mov eax, dword [esp + 0x40]
cmp byte [ebx + edi*4 + 0xc], al
jne 0x40c890
cmp byte [ebx + edi*4 + 0xd], ah
jne 0x40c890
mov eax, dword [esp + 0x54]
cmp byte [ebx + edi*4 + 0xe], al
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
jne 0x40c88a
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x34]
cmp byte [ebx + edi*4 + 0xf], al
mov eax, dword [esp + 0x1c]
je 0x40c81c
jmp 0x40c88a
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
test dl, dl
je 0x40c860
test al, 1
je 0x40c8b5
mov al, 1
mov dword [esp + 0xc], eax
cmp dword [esp + 4], 0
jg 0x40c8cf
jmp 0x40c91e
test esi, esi
jle 0x40c6f5
cmp dword [ecx - 4], 0
jne 0x40c6f3
jmp 0x40c6f5
mov byte [esp + 0x27], al
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x64]
jmp 0x40c994
mov eax, dword [esp + 0x1c]
mov ebp, esi
mov esi, dword [esp + 8]
test al, 1
je 0x40c8a0
jmp 0x40c818
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 8]
test al, 1
jne 0x40c818
cmp dword [esp + 4], 1
jne 0x40c818
mov dl, 1
mov dword [esp + 0xc], edx
test al, 1
jne 0x40c8cf
test byte [esp + 0x70], 1
je 0x40ccfd
mov dword [esp + 0xc], 0
cmp dword [esp + 4], 0
jle 0x40c91e
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.00418760
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 0x40ca30
mov al, byte [ebx + edi + 9]
cmp al, byte [ebp + edi + 9]
jne 0x40ca30
mov al, byte [ebx + edi + 0xa]
cmp al, byte [ebp + edi + 0xa]
jne 0x40ca30
mov al, byte [ebx + edi + 0xb]
cmp al, byte [ebp + edi + 0xb]
jne 0x40ca30
mov al, byte [ebx + edi + 0xc]
cmp al, byte [ebp + edi + 0xc]
jne 0x40ca30
mov al, byte [ebx + edi + 0xd]
cmp al, byte [ebp + edi + 0xd]
jne 0x40ca30
mov al, byte [ebx + edi + 0xe]
cmp al, byte [ebp + edi + 0xe]
jne 0x40ca30
mov al, byte [ebx + edi + 0xf]
cmp al, byte [ebp + edi + 0xf]
jne 0x40ca30
lea eax, [ebx + edi]
mov edi, dword [esp + 0x28]
cmp dword [eax], edi
jne 0x40ca1d
mov ecx, dword [esp + 0x34]
mov ecx, dword [ebx + ecx*4 + 4]
xor ecx, dword [esp + 0x2c]
test ecx, 0xfffffff
je 0x40cd0a
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x14]
jmp 0x40ca44
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.00430770
add esp, 0x18
lea ecx, [edi - 0x10001]
cmp ecx, 0xffffe
ja 0x40caa0
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 0x40caa2
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 0x40cbe0
mov esi, dword [esp + 0x44]
mov edx, edi
jmp 0x40caf0
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 0x40cbc0
lea ebp, [eax + eax*4]
mov ebx, dword [esi + ebp*4]
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x40cb50
cmp eax, 0xd900
je 0x40cb30
cmp eax, 0xd800
jne 0x40cb65
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x20c
jmp 0x40cb62
mov eax, dword [esp]
mov eax, dword [eax + 0x106c]
movzx ecx, bl
lea eax, [eax + ecx*2]
add eax, 0x60c
jmp 0x40cb62
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.00430770
add esp, 0x18
lea ecx, [ebx - 0x10001]
cmp ecx, 0xffffe
ja 0x40cad0
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 0x40cad4
or dword [esp + 0x48], 0x80000000
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
jmp 0x40cbea
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 0x40cca2
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.00417190
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 0x40cc9a
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 0x40c58b
add ebp, 1
mov edi, dword [esp]
cmp ebp, dword [edi + 0x12c]
jge 0x40c58b
mov dword [esp + 4], edx
add dword [esp + 0x44], 0x14
cmp ecx, eax
jne 0x40c540
cmp ebp, dword [esp + 0x4c]
jne 0x40c540
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.0044edd0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
jmp 0x40c540
mov dword [esp + 0xc], 0
jmp 0x40c91e
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 0x40cd46
test edx, edx
je 0x40ca1d
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 0x40cd10
jmp 0x40ca1d
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 0x40ca25
test byte [esp + 0x1c], 1
je 0x40cdd0
test edx, edx
jle 0x40cdd0
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.00418760
add esp, 0x1c
cmp byte [ebx + 0xc], 0
jne 0x40bede
jmp 0x40bef2
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x20]
cmp byte [ebx + 0xc], 0
jne 0x40bede
jmp 0x40bef2
push edi
call fcn.00430760
add esp, 4
push dword [esp + 0x14]
call fcn.00430760
add esp, 4
mov ecx, dword [esp + 0x8c]
xor ecx, esp
call fcn.00441724
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret