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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov eax, dword [0x4b507c]
mov edi, ecx
xor esi, esi
xor eax, ebp
mov dword [esp + 0x90], eax
mov eax, 0x400
mov dword [esp + 0x8c], eax
push esi
push 2
push eax
call fcn.00410b50
add esp, 0xc
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], 0
push esi
push 0x14
push dword [edi + 0x12c]
call fcn.00410b50
add esp, 0xc
mov cl, byte [edi + 0xbe]
mov dword [esp + 0x28], eax
cmp cl, byte [edi + 0x135]
setne byte [esp + 4]
cmp byte [edi + 0xc4], 0
je 0x448a82
cmp byte [edi + 0x134], 0
je 0x448a67
cmp byte [edi + 0xc7], 0
mov eax, 0x40000000
jne 0x448a6c
xor eax, eax
cmp byte [edi + 0x10c6], 0
sete al
shl eax, 0x1e
jmp 0x448a6c
mov eax, 0x20000000
mov ecx, eax
or ecx, 0x10000000
cmp byte [edi + 0xae], 0
cmove ecx, eax
mov dword [esp + 0x54], ecx
mov edx, dword [edi + 0x94]
mov ecx, edi
mov ebx, edx
sub ebx, dword [edi + 0x10]
push 0
push 0x153d
call fcn.0044a8ca
add esp, 8
mov esi, eax
mov eax, dword [edi + 0x98]
mov ecx, edi
mov edx, esi
mov dword [esp + 0x2c], eax
push ebx
call fcn.0044ce94
add esp, 4
test eax, eax
mov dword [esp + 0x20], ebx
je 0x448ad5
mov ecx, dword [edi + 0x1098]
lea edx, [ebx + ebx*4]
mov ecx, dword [ecx + edx*4 + 0xc]
mov edx, dword [esp + 0x2c]
mov edx, dword [ecx + edx*4]
jmp 0x448adc
mov eax, dword [esi + 0x14]
mov edx, dword [esp + 0x2c]
test edx, edx
jle 0x448af9
lea ecx, [edx + edx*4]
mov ebx, edx
xor edx, edx
cmp dword [eax + ecx*4], 0xdfff
sete dl
sub ebx, edx
mov dword [esp + 0x2c], ebx
jmp 0x448afd
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x20]
cmp byte [esi + 0xc], 0
je 0x448b1f
push dword [esi + 0x14]
call fcn.00410bcd
add esp, 4
push esi
call fcn.00410bcd
mov edx, dword [esp + 0x24]
add esp, 4
mov ecx, dword [edi + 0x20]
mov dword [esp], edi
test ecx, ecx
js 0x448b91
mov eax, dword [edi + 0x1c]
cmp ecx, edx
jne 0x448b3f
mov edx, dword [esp + 0x54]
cmp dword [edi + 0x24], edx
jne 0x448b3f
cmp eax, dword [esp + 0x2c]
je 0x448b91
mov edx, dword [edi + 0x18]
test eax, eax
mov ecx, dword [edx + ecx*4]
lea edx, [eax + eax*4]
mov ecx, dword [ecx + 0x14]
lea esi, [ecx + edx*4]
jle 0x448b64
cmp dword [esi], 0xdfff
jne 0x448b64
or dword [esi - 0x10], 0x3ffff
mov eax, dword [edi + 0x1c]
mov edi, dword [edi + 0x12c]
dec edi
cmp eax, edi
jge 0x448b7f
cmp dword [esi + 0x14], 0xdfff
jne 0x448b7f
or dword [esi + 0x18], 0x3ffff
or dword [ecx + edx*4 + 4], 0x3ffff
mov edi, dword [esp]
mov dword [edi + 0x24], 0
xor eax, eax
dec eax
mov dword [edi + 0x20], eax
mov dword [edi + 0x1c], eax
cmp dword [edi + 0x128], 0
jle 0x44979b
mov cl, byte [esp + 4]
xor eax, eax
mov al, cl
shl eax, 0x14
mov dword [esp + 0x58], eax
xor eax, eax
mov edx, dword [edi + 0x10]
mov esi, eax
mov ecx, edi
add edx, eax
mov dword [esp + 0x10], edx
push 0
push 0x1573
call fcn.0044a8ca
add esp, 8
mov ebx, eax
mov ecx, edi
mov edx, eax
push esi
call fcn.0044ce94
add esp, 4
test eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], ebx
je 0x448bfe
mov eax, dword [edi + 0x1098]
lea ecx, [esi + esi*4]
mov eax, dword [eax + ecx*4 + 0x10]
jmp 0x448c07
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x3c], eax
xor eax, eax
mov edx, dword [edi + 0x12c]
mov ecx, esi
mov dword [esp + 0xc], esi
test edx, edx
jle 0x4490c8
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
je 0x448c36
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x3c]
mov esi, dword [esp]
mov dword [esp + 0x14], ecx
xor eax, eax
mov edx, dword [edi + ebx + 4]
mov edi, dword [edi + ebx]
mov ecx, edx
mov dword [esp + 4], edi
and ecx, 0xfffc0000
or ecx, 0x20500
cmp byte [esi + 0x10a1], al
cmovne ecx, edx
cmp byte [esi + 0x10fb], al
jne 0x448cb5
mov edx, ecx
mov eax, 0x1ff
mov esi, ecx
mov edi, 0xfffffff0
and edx, eax
and esi, 0xfffffe00
mov eax, 0xf0
add edx, edi
or esi, 0x100
cmp edx, eax
mov edx, 0x1ff
cmovae esi, ecx
mov ecx, esi
shr ecx, 9
and ecx, edx
add ecx, edi
cmp ecx, eax
jae 0x448cb3
and esi, 0xfffc01ff
or esi, 0x20400
mov ecx, esi
mov edx, dword [esp]
cmp byte [edx + 0x10fc], 0
je 0x448cd6
mov eax, dword [esp + 0x3c]
movsd xmm0, qword [eax + ebx + 8]
movsd qword [esp + 0x80], xmm0
jmp 0x448ce6
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], eax
mov edx, dword [esp + 4]
and edx, 0xffffff00
cmp edx, 0xda00
je 0x448d36
cmp edx, 0xd900
je 0x448d1f
cmp edx, 0xd800
jne 0x448d59
mov edx, dword [esp]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x210]
jmp 0x448d48
mov edx, dword [esp]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x610]
jmp 0x448d48
mov edx, dword [esp]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x10]
movzx edx, word [edx]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
mov dword [esp + 4], edx
jmp 0x448d61
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
dec edx
cmp eax, edx
jge 0x448d80
mov esi, dword [esp + 0x3c]
mov eax, ecx
or eax, 0x400000
cmp dword [esi + ebx + 0x14], 0xdfff
cmove ecx, eax
mov eax, dword [esp]
mov edx, edi
mov eax, dword [eax + 0xe1c]
and eax, 0xfffffffe
cmp eax, 2
jne 0x448e4c
mov eax, dword [esp]
cmp dword [eax + 0xe20], 0
mov esi, dword [eax + 0xe28]
mov eax, dword [eax + 0xe2c]
je 0x448df2
cmp esi, dword [esp + 0x10]
jg 0x448e4c
cmp eax, dword [esp + 0x18]
jg 0x448e4c
mov edx, dword [esp]
mov edi, dword [esp + 0x10]
mov esi, ecx
xor eax, eax
xor esi, dword [esp + 0x58]
cmp edi, dword [edx + 0xe30]
jg 0x448f7e
mov edi, dword [esp + 0x18]
cmp edi, dword [edx + 0xe34]
mov edi, edx
mov edx, dword [esp + 0x20]
jl 0x448e45
jmp 0x448e57
xor edx, edx
cmp eax, dword [esp + 0x18]
setle dl
xor eax, eax
cmp esi, dword [esp + 0x10]
setl al
cmove eax, edx
mov edx, dword [esp + 0x20]
cmp al, 1
jne 0x448e4c
mov edx, dword [esp]
mov esi, dword [esp + 0x18]
xor eax, eax
cmp esi, dword [edx + 0xe34]
mov esi, dword [esp + 0x10]
mov edi, edx
setl al
xor edx, edx
cmp esi, dword [edi + 0xe30]
mov esi, ecx
setl dl
cmove edx, eax
xor esi, dword [esp + 0x58]
xor eax, eax
test dl, dl
mov edx, dword [esp + 0x20]
je 0x448e57
mov eax, 0x100000
jmp 0x448e57
mov esi, ecx
mov edi, dword [esp]
xor eax, eax
xor esi, dword [esp + 0x58]
xor esi, eax
bt ecx, 0x15
jae 0x448e98
cmp byte [edi + 0xc9], 0
je 0x448e98
cmp byte [edi + 0x134], 0
mov ecx, dword [esp + 0xc]
je 0x448ea0
mov eax, edi
mov edi, edx
cmp byte [eax + 0xc8], 0
je 0x448ea2
mov eax, dword [esp]
mov eax, dword [eax + 0x1060]
movzx eax, word [eax + 0x250]
mov dword [esp + 4], eax
jmp 0x448ea2
mov ecx, dword [esp + 0xc]
mov edi, edx
jmp 0x448ea8
mov edi, edx
and esi, 0xffdfffff
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
cmp edx, dword [eax + ebx]
jne 0x448eda
mov eax, dword [eax + ebx + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
mov ecx, dword [esp + 0xc]
jne 0x448eda
and eax, 0x800000
or esi, eax
jmp 0x448f0c
bt esi, 0x16
jb 0x448f0c
mov eax, dword [esp]
mov eax, dword [eax + 0x1058]
mov ecx, dword [eax]
push dword [esp + 4]
push eax
call dword [ecx + 0x10]
mov edi, dword [esp + 0x28]
add esp, 8
mov ecx, esi
or ecx, 0x800000
cmp eax, 2
cmove esi, ecx
mov ecx, dword [esp + 0xc]
cmp ecx, edi
jne 0x448f30
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x14]
jne 0x448f30
mov eax, dword [esp + 0x54]
mov edx, dword [esp]
mov dword [edx + 0x24], eax
mov dword [edx + 0x1c], ecx
mov dword [edx + 0x20], edi
or esi, eax
mov edi, edx
jmp 0x448f33
mov edi, dword [esp]
mov eax, dword [esp + 0x28]
mov dword [eax + ebx + 4], esi
mov edx, eax
mov eax, dword [esp + 4]
mov dword [edx + ebx], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [edx + ebx + 0xc], ecx
mov dword [edx + ebx + 8], eax
mov dword [edx + ebx + 0x10], 0
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
add ebx, 0x14
mov edx, dword [edi + 0x12c]
inc ecx
cmp ecx, edx
jl 0x448c23
jmp 0x448f89
mov edi, edx
mov edx, dword [esp + 0x20]
jmp 0x448e57
mov ecx, dword [esp + 0xc]
test edx, edx
jle 0x4490c8
xor ebx, ebx
mov dword [esp + 0x10], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], 0
mov esi, dword [edi + 0x18]
lea edi, [ebx*4]
mov dword [esp + 0x1c], edx
mov edx, ebx
lea ebx, [edi + edi*4]
mov dword [esp + 4], edx
mov esi, dword [esi + ecx*4]
mov ecx, edx
mov ecx, dword [esp + 0x24]
mov esi, dword [esi + 0x14]
movzx ecx, cl
mov eax, dword [esi + ebx + 4]
mov edi, dword [esi + ebx]
mov dword [esp + 0x14], eax
test eax, eax
mov eax, dword [esp + 0x18]
cmovs eax, edx
mov dword [esp + 0x18], eax
mov eax, 0
cmovs ecx, eax
mov eax, dword [esp + 0x28]
cmp edi, dword [eax + ebx]
jne 0x449033
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 4]
and edi, 0xfffffff
lea ebx, [edx + edx*4]
cmp edi, dword [eax + ebx*4 + 4]
jne 0x449033
mov dword [esp + 0x24], ecx
test cl, 1
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
jne 0x4490a2
jmp 0x4490b8
mov edx, dword [esp + 0x14]
test cl, 1
jne 0x44908a
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x18]
mov al, 1
cmp ecx, ebx
jge 0x449098
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp]
mov edx, dword [esp + 0xc]
add eax, ecx
lea ecx, [ecx + ecx*4]
lea edi, [ecx*4 + 4]
or dword [esi + edi], 0x3ffff
add edi, 0x14
inc eax
mov ecx, dword [ebx + 0x18]
mov ecx, dword [ecx + edx*4]
mov esi, dword [ecx + 0x14]
jne 0x449065
mov ebx, dword [esp + 4]
mov ecx, edx
lea eax, [ebx + ebx*4]
mov edi, dword [esi + eax*4 + 4]
jmp 0x4490a2
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 4]
jmp 0x4490a0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x24], eax
mov edi, edx
mov edx, dword [esp]
lea eax, [ebx + ebx*4]
or edi, 0x3ffff
mov dword [esi + eax*4 + 4], edi
mov edx, dword [edx + 0x12c]
mov edi, dword [esp]
dec dword [esp + 0x10]
inc ebx
cmp ebx, edx
jl 0x448faf
mov eax, dword [esp + 0x38]
mov edx, ecx
mov ecx, dword [edi + 0x18]
movzx eax, word [eax]
mov ecx, dword [ecx + edx*4]
cmp ax, word [ecx]
mov word [ecx], ax
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x78]
setne bl
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], eax
cmp dword [edi + 0x12c], 0
jle 0x44975c
mov edx, ecx
mov dword [esp + 0x44], ecx
shr ecx, 0x10
mov dword [esp + 0x4c], eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x6c], ecx
mov ecx, eax
shr eax, 0x10
shr edx, 0x18
shr ecx, 0x18
mov dword [esp + 0x74], eax
mov eax, ebx
xor ebx, ebx
mov dword [esp + 0x68], edx
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp + 0x64], eax
mov eax, ebx
lea eax, [ebx*4]
mov dword [esp + 0x14], ebx
mov edx, dword [esp + 0x28]
lea ebx, [eax + eax*4]
mov eax, dword [edi + 0x18]
mov esi, dword [edx + ebx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0x1c], esi
mov eax, dword [eax + 0x14]
movzx edx, dl
mov dword [esp + 4], eax
mov eax, dword [eax + ebx + 4]
mov dword [esp + 0x7c], eax
xor eax, esi
bt eax, 0x16
mov eax, 1
cmovb edx, eax
mov eax, esi
mov esi, dword [ecx + ebx]
xor eax, dword [esp + 0x40]
mov dword [esp + 0x64], edx
test dword [edi + 0x1040], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x24], ebx
setne dl
cmp byte [ecx + ebx + 8], al
jne 0x44921a
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x4c]
lea eax, [eax + eax*4]
cmp byte [ecx + eax*4 + 9], bh
jne 0x44921a
mov ebx, dword [esp + 0x74]
cmp byte [ecx + eax*4 + 0xa], bl
jne 0x44921a
mov ebx, dword [esp + 0x70]
cmp byte [ecx + eax*4 + 0xb], bl
jne 0x44921a
mov ebx, dword [esp + 0x44]
cmp byte [ecx + eax*4 + 0xc], bl
jne 0x44921a
mov ebx, dword [esp + 0x44]
cmp byte [ecx + eax*4 + 0xd], bh
jne 0x44921a
mov ebx, dword [esp + 0x6c]
cmp byte [ecx + eax*4 + 0xe], bl
jne 0x44921a
mov ebx, dword [esp + 0x68]
cmp byte [ecx + eax*4 + 0xf], bl
je 0x44921c
mov dl, 1
lea eax, [esi - 0x23ba]
mov dword [esp + 0x50], esi
cmp eax, 4
jb 0x44924a
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x44924c
lea eax, [eax + eax*4]
mov esi, 0xffffdc46
mov eax, dword [ecx + eax*4 - 0x14]
add eax, esi
mov esi, dword [esp + 0x50]
cmp eax, 3
ja 0x44924c
mov dl, 1
mov eax, esi
mov edi, esi
and esi, 0xfffffe00
mov ebx, dword [esp + 0x3c]
movzx edx, dl
and eax, 0xfffffc00
and edi, 0xffffff00
cmp esi, 0xf000
mov esi, 0
cmove esi, edi
cmp eax, 0xd800
mov eax, dword [esp + 0x24]
cmove esi, edi
cmp esi, dword [esp + 0x78]
lea ecx, [ebx + eax]
mov eax, 1
cmovne edx, eax
mov eax, dword [esp + 0x14]
lea edi, [eax + eax*4]
cmp dword [ebx + edi*4 + 0x10], 0
mov dword [esp + 0x60], edi
je 0x449306
mov dl, 1
cmp dword [ecx], 0xdffe
jne 0x4492b1
mov dl, 1
jmp 0x4492c8
cmp eax, 2
jl 0x4492c8
cmp dword [ecx - 0x14], 0xdfff
jne 0x4492c8
cmp dword [ecx - 0x28], 0xdffe
je 0x4492ad
mov eax, dword [esp]
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x1060]
mov ecx, ebx
and cl, 1
mov byte [esp + 0xb], cl
mov al, byte [eax + 4]
mov ah, al
or ah, cl
je 0x449312
mov ebx, dword [esp + 0x10]
test dl, dl
jne 0x449351
mov eax, ebx
mov byte [esp + 0xb], bl
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x1c]
jmp 0x449441
test eax, eax
jle 0x4492a5
cmp dword [ecx - 4], 0
jne 0x4492a3
jmp 0x4492a5
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x10]
and ecx, 0xfffffff
cmp ecx, dword [esp + 0x1c]
jne 0x44933f
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 4]
cmp dword [ebx + edi*4], ecx
mov ebx, dword [esp + 0x10]
je 0x449351
test bl, 1
sete cl
cmp dword [esp + 0x30], 1
sete ah
test ah, cl
je 0x4492ef
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea edi, [ecx + edx + 8]
mov cl, 1
mov edx, ebx
and bl, cl
cmp dword [esp + 0x30], 0
jle 0x4493df
or dl, byte [esp + 0x5c]
and dl, cl
je 0x4493df
sub esp, 0x1c
movsd xmm0, qword [esp + 0x9c]
movsd qword [esp + 0x14], xmm0
mov dword [esp + 0x2c], edi
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x10], eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x54]
mov dword [esp], ecx
mov ecx, edi
call fcn.00452996
add esp, 0x1c
mov ecx, dword [edi + 0x18]
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x1060]
mov edi, dword [esp + 0x10]
mov ecx, dword [ecx + edx*4]
mov al, byte [eax + 4]
mov ecx, dword [ecx + 0x14]
mov dword [esp + 4], ecx
mov edx, dword [edi]
mov edi, dword [edi + 4]
test al, al
movzx eax, byte [esp + 0x5c]
movzx ecx, bl
mov dword [esp + 0x78], esi
cmove ecx, eax
mov eax, edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x44], edi
shr edi, 0x18
mov dword [esp + 0x80], edx
mov dword [esp + 0x4c], edx
xor ebx, ebx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
shr eax, 0x10
mov dword [esp + 0x6c], eax
mov eax, edx
shr edx, 0x18
shr eax, 0x10
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x18]
lea esi, [eax + ecx*4 + 0x10]
mov eax, dword [esp + 4]
lea ecx, [eax + ecx*4]
push edi
mov edi, dword [esp + 0x54]
push edi
call fcn.00452b66
add esp, 8
movzx ecx, byte [esp + 0xb]
mov byte [esp + 0xb], al
test al, al
mov eax, 1
cmove ecx, eax
mov dword [esp + 0x10], ecx
push 0
mov eax, 2
push eax
push ebx
push eax
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x48]
call fcn.00410bd9
add esp, 0x18
lea ecx, [edi - 0x10001]
cmp ecx, 0xffffe
ja 0x4494d0
lea ecx, [edi - 0x10000]
lea edi, [ebx + 1]
mov edx, ecx
and ecx, 0x3ff
shr edx, 0xa
or ecx, 0xdc00
add edx, 0xffffd800
mov word [eax + ebx*2 + 2], cx
jmp 0x4494d4
mov edx, edi
mov edi, ebx
mov word [eax + ebx*2], dx
inc edi
mov ecx, dword [esi]
test ecx, ecx
je 0x4495c6
mov esi, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
mov dword [esp + 0x34], eax
mov ebx, dword [esi + ecx*4]
mov dword [esp + 4], ecx
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x44953b
cmp eax, 0xd900
je 0x449526
cmp eax, 0xd800
jne 0x44954e
mov eax, dword [esp]
movzx ecx, bl
mov eax, dword [eax + 0x1060]
lea eax, [eax + ecx*2 + 0x210]
jmp 0x44954b
mov eax, dword [esp]
movzx ecx, bl
mov eax, dword [eax + 0x1060]
lea eax, [eax + ecx*2 + 0x610]
jmp 0x44954b
mov eax, dword [esp]
movzx ecx, bl
mov eax, dword [eax + 0x1060]
lea eax, [eax + ecx*2 + 0x10]
movzx ebx, word [eax]
push 0
mov eax, 2
push eax
push edi
push eax
lea eax, [esp + 0x9c]
push eax
push dword [esp + 0x48]
call fcn.00410bd9
add esp, 0x18
lea ecx, [ebx - 0x10001]
cmp ecx, 0xffffe
ja 0x4495a1
add ebx, 0xffff0000
lea ecx, [edi + 1]
mov edx, ebx
and ebx, 0x3ff
shr edx, 0xa
or ebx, 0xdc00
add edx, 0xffffd800
mov word [eax + edi*2 + 2], bx
jmp 0x4495a5
mov edx, ebx
mov ecx, edi
mov word [eax + edi*2], dx
mov edx, dword [esp + 4]
mov edi, ecx
inc edi
lea esi, [esi + edx*4]
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x4494e7
or dword [esp + 0x40], 0x80000000
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
cmp byte [esp + 0xb], 0
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edi
jne 0x449661
mov edi, dword [esp]
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
mov eax, dword [edi + 0x18]
mov edx, ebx
mov ecx, dword [eax + ecx*4]
push dword [esp + 0x18]
call fcn.00451b88
mov ecx, dword [esp + 0x10]
add esp, 4
mov eax, dword [edi + 0x18]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x48], ebx
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [eax + esi], edx
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [eax + esi + 4], edx
mov edx, dword [esp + 0x44]
mov eax, dword [edi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [eax + esi + 0xc], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + esi + 8], edx
jne 0x44965d
mov eax, dword [edi + 0x18]
mov edx, dword [esp + 0x60]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
or dword [eax + edx*4 + 4], 0x80000000
mov edx, dword [esp + 0x1c]
bt edx, 0x16
jb 0x449673
mov ebx, dword [esp + 0x14]
mov edi, dword [esp]
jmp 0x4496fd
mov ebx, dword [esp + 0x14]
mov edi, dword [esp]
inc ebx
cmp ebx, dword [edi + 0x12c]
jge 0x4496fd
add dword [esp + 0x18], 0x14
cmp ecx, dword [esp + 0x20]
jne 0x4496af
cmp ebx, dword [esp + 0x2c]
jne 0x4496af
push 0x1695
push str..._terminal.c
push str.__i__our_curs_y__j__our_curs_x_
call fcn.0047b3ef
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [edi + 0x18]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + ecx*4]
lea ecx, [ebx + ebx*4]
mov edx, esi
shl ecx, 2
add ecx, dword [eax + 0x14]
mov dword [esp + 4], eax
push dword [esi + 4]
push dword [esi]
call fcn.00452b66
add esp, 8
mov ecx, dword [esp + 0x10]
test al, al
mov eax, 1
mov edx, ebx
movzx ecx, cl
cmove ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 4]
push esi
call fcn.00451b88
mov ecx, dword [esp + 0x10]
add esp, 4
inc ebx
cmp ebx, dword [edi + 0x12c]
jl 0x449161
test byte [esp + 0x10], 1
mov eax, dword [esp + 0x34]
je 0x449766
mov edx, dword [esp + 0x30]
test edx, edx
jle 0x449766
sub esp, 0x1c
movsd xmm0, qword [esp + 0x9c]
movsd qword [esp + 0x14], xmm0
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], edx
mov ecx, edi
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x64]
mov edx, ebx
mov dword [esp + 0x10], esi
mov dword [esp], eax
call fcn.00452996
add esp, 0x1c
jmp 0x44976a
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x38]
jmp 0x44976e
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x28]
cmp byte [ebx + 0xc], 0
je 0x449788
push dword [ebx + 0x14]
call fcn.00410bcd
add esp, 4
push ebx
call fcn.00410bcd
add esp, 4
mov eax, dword [esp + 0xc]
inc eax
cmp eax, dword [edi + 0x128]
jl 0x448bb8
jmp 0x44979f
mov esi, dword [esp + 0x28]
push esi
call fcn.00410bcd
add esp, 4
push dword [esp + 0x34]
call fcn.00410bcd
add esp, 4
mov ecx, dword [esp + 0x90]
xor ecx, ebp
call fcn.0046f0c8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret