Function at 0x449083
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, 0xa0
mov eax, dword [0x4b6078]
mov ebx, ecx
xor esi, esi
xor eax, ebp
mov dword [esp + 0x98], eax
mov eax, 0x400
mov dword [esp + 0x94], eax
push esi
push 2
push eax
call fcn.00410b8c
add esp, 0xc
mov dword [esp + 0xc], eax
mov dword [esp + 0x54], 0
push esi
push 0x14
push dword [ebx + 0x12c]
call fcn.00410b8c
add esp, 0xc
mov cl, byte [ebx + 0xbe]
mov dword [esp + 0x38], eax
cmp cl, byte [ebx + 0x135]
setne byte [esp + 0x10]
cmp byte [ebx + 0xc4], 0
je 0x44913a
cmp byte [ebx + 0x134], 0
je 0x44911f
cmp byte [ebx + 0xc7], 0
mov eax, 0x40000000
jne 0x449124
xor eax, eax
cmp byte [ebx + 0x10c6], 0
sete al
shl eax, 0x1e
jmp 0x449124
mov eax, 0x20000000
mov ecx, eax
or ecx, 0x10000000
cmp byte [ebx + 0xae], 0
cmove ecx, eax
mov dword [esp + 0x54], ecx
mov edx, dword [ebx + 0x94]
mov ecx, ebx
mov esi, edx
sub esi, dword [ebx + 0x10]
push 0
push 0x151a
call fcn.0044aeda
add esp, 8
mov edi, dword [ebx + 0x98]
mov ecx, ebx
mov dword [esp + 4], eax
mov edx, eax
push esi
call fcn.0044d4fb
add esp, 4
test eax, eax
mov dword [esp + 8], ebx
je 0x44918d
mov ecx, dword [ebx + 0x1098]
lea edx, [esi + esi*4]
mov ebx, dword [esp + 4]
mov ecx, dword [ecx + edx*4 + 0xc]
mov edi, dword [ecx + edi*4]
mov edx, edi
jmp 0x449198
mov ecx, dword [esp + 4]
mov edx, edi
mov eax, dword [ecx + 0x14]
mov ebx, ecx
test edx, edx
jle 0x4491b1
lea ecx, [edx + edx*4]
mov edi, edx
xor edx, edx
cmp dword [eax + ecx*4], 0xdfff
sete dl
sub edi, edx
mov edx, edi
mov edi, dword [esp + 8]
cmp byte [ebx + 0xc], 0
mov dword [esp + 0x58], edx
je 0x4491d3
push dword [ebx + 0x14]
call fcn.00410c0e
add esp, 4
push ebx
call fcn.00410c0e
add esp, 4
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x60], esi
test ecx, ecx
js 0x449249
mov eax, dword [edi + 0x1c]
cmp ecx, esi
jne 0x4491f6
mov edx, dword [esp + 0x54]
cmp dword [edi + 0x24], edx
mov edx, dword [esp + 0x58]
jne 0x4491f6
cmp eax, edx
je 0x449249
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 0x44921b
cmp dword [esi], 0xdfff
jne 0x44921b
or dword [esi - 0x10], 0x3ffff
mov eax, dword [edi + 0x1c]
mov edi, dword [edi + 0x12c]
dec edi
cmp eax, edi
jge 0x449236
cmp dword [esi + 0x14], 0xdfff
jne 0x449236
or dword [esi + 0x18], 0x3ffff
or dword [ecx + edx*4 + 4], 0x3ffff
mov edi, dword [esp + 8]
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 0x449e3c
mov cl, byte [esp + 0x10]
xor eax, eax
mov al, cl
shl eax, 0x14
mov dword [esp + 0x5c], eax
xor eax, eax
mov edx, dword [edi + 0x10]
mov esi, eax
mov ecx, edi
add edx, eax
mov dword [esp + 0x2c], edx
push 0
push 0x1550
call fcn.0044aeda
add esp, 8
mov ebx, edi
mov edi, eax
mov edx, eax
mov ecx, ebx
push esi
call fcn.0044d4fb
add esp, 4
test eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x44], edi
je 0x4492bc
mov eax, dword [ebx + 0x1098]
lea ecx, [esi + esi*4]
mov eax, dword [eax + ecx*4 + 0x10]
jmp 0x4492c5
mov eax, dword [edi + 0x14]
mov dword [esp + 0x3c], eax
xor eax, eax
mov ecx, dword [ebx + 0x12c]
mov edx, dword [esp + 0xc]
mov edi, ebx
test ecx, ecx
jle 0x449776
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x1c], eax
jmp 0x4492fa
mov edi, edx
mov edx, dword [esp + 0xc]
mov esi, ebx
jmp 0x44951d
test eax, eax
mov edx, ecx
je 0x449303
mov edx, dword [eax + ecx*4]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 8]
mov dword [esp + 0x18], 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 0x449386
mov edx, ecx
mov esi, ecx
mov eax, 0xf0
and edx, 0x1ff
and esi, 0xfffffe00
add edx, 0xfffffff0
or esi, 0x100
cmp edx, eax
cmovae esi, ecx
mov ecx, esi
shr ecx, 9
and ecx, 0x1ff
add ecx, 0xfffffff0
cmp ecx, eax
jae 0x449384
and esi, 0xfffc01ff
or esi, 0x20400
mov ecx, esi
mov edx, dword [esp + 8]
cmp byte [edx + 0x10fc], 0
je 0x4493a8
mov eax, dword [esp + 0x3c]
movsd xmm0, qword [eax + ebx + 8]
movsd qword [esp + 0x88], xmm0
jmp 0x4493b8
xor eax, eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], eax
mov edx, dword [esp + 4]
and edx, 0xffffff00
cmp edx, 0xda00
je 0x44940a
cmp edx, 0xd900
je 0x4493f2
cmp edx, 0xd800
jne 0x449424
mov edx, dword [esp + 8]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x210]
jmp 0x44941d
mov edx, dword [esp + 8]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x610]
jmp 0x44941d
mov edx, dword [esp + 8]
movzx esi, byte [esp + 4]
mov edx, dword [edx + 0x1060]
lea edx, [edx + esi*2 + 0x10]
movzx eax, word [edx]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
dec eax
cmp dword [esp + 0x18], eax
jge 0x449449
mov esi, dword [esp + 0x3c]
mov eax, ecx
or eax, 0x400000
cmp dword [esi + ebx + 0x14], 0xdfff
cmove ecx, eax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x10], ebx
mov eax, dword [eax + 0xe1c]
and eax, 0xfffffffe
cmp eax, 2
jne 0x449511
mov eax, dword [esp + 8]
cmp dword [eax + 0xe20], 0
mov edx, dword [eax + 0xe28]
mov eax, dword [eax + 0xe2c]
je 0x4494c2
cmp edx, dword [esp + 0x2c]
mov edx, dword [esp + 0xc]
jg 0x449511
cmp eax, esi
jg 0x449511
mov eax, ecx
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x2c]
xor eax, dword [esp + 0x5c]
mov ebx, eax
xor eax, eax
cmp edi, dword [edx + 0xe30]
jg 0x4492ed
cmp esi, dword [edx + 0xe34]
mov edi, edx
mov edx, dword [esp + 0xc]
mov esi, ebx
jl 0x44950a
jmp 0x44951d
cmp eax, esi
setle al
cmp edx, dword [esp + 0x2c]
setl dl
je 0x4494d2
mov eax, edx
mov edx, dword [esp + 0xc]
cmp al, 1
jne 0x449511
mov eax, dword [esp + 8]
cmp esi, dword [eax + 0xe34]
mov edi, eax
mov eax, dword [esp + 0x2c]
setl dl
cmp eax, dword [edi + 0xe30]
setl al
je 0x4494fa
mov edx, eax
mov esi, ecx
xor eax, eax
xor esi, dword [esp + 0x5c]
test dl, dl
mov edx, dword [esp + 0xc]
je 0x44951d
mov eax, 0x100000
jmp 0x44951d
mov esi, ecx
mov edi, dword [esp + 8]
xor eax, eax
xor esi, dword [esp + 0x5c]
xor esi, eax
bt ecx, 0x15
jae 0x44955e
mov al, byte [edi + 0xc9]
test al, al
je 0x44955e
cmp byte [edi + 0x134], 0
mov ecx, dword [esp + 0x14]
je 0x449556
cmp byte [edi + 0xc8], 0
je 0x449556
mov eax, dword [edi + 0x1060]
movzx eax, word [eax + 0x250]
mov dword [esp + 4], eax
and esi, 0xffdfffff
jmp 0x449562
mov ecx, dword [esp + 0x14]
mov ebx, esi
mov eax, dword [edi + 0x18]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x10]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
cmp esi, dword [eax + edi]
mov esi, ebx
jne 0x449599
mov eax, dword [eax + edi + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
mov ecx, dword [esp + 0x14]
jne 0x449599
and eax, 0x800000
or esi, eax
jmp 0x4495ce
bt esi, 0x16
jb 0x4495ce
mov ebx, dword [esp + 8]
mov eax, dword [ebx + 0x1058]
mov ecx, dword [eax]
push dword [esp + 4]
push eax
call dword [ecx + 0x10]
mov edx, dword [esp + 0x14]
add esp, 8
mov ecx, esi
or ecx, 0x800000
cmp eax, 2
cmove esi, ecx
mov ecx, dword [esp + 0x14]
jmp 0x4495d2
mov ebx, dword [esp + 8]
cmp ecx, dword [esp + 0x60]
jne 0x4495f5
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x18]
jne 0x4495f5
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x24], eax
mov dword [ebx + 0x1c], ecx
mov ecx, dword [esp + 0x60]
or esi, eax
mov dword [ebx + 0x20], ecx
mov eax, esi
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov dword [edi + esi + 4], eax
mov eax, dword [esp + 4]
mov dword [edi + esi], eax
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov dword [edi + esi + 0xc], ecx
mov ecx, dword [esp + 0x18]
mov dword [edi + esi + 8], eax
mov dword [edi + esi + 0x10], 0
add esi, 0x14
mov eax, dword [ebx + 0x12c]
mov dword [esp + 0x10], esi
inc ecx
mov dword [esp + 0x28], eax
cmp ecx, eax
mov eax, dword [esp + 0x1c]
jl 0x4492fa
mov ecx, dword [esp + 0x28]
mov edi, ebx
test ecx, ecx
jle 0x449776
xor eax, eax
xor ebx, ebx
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
mov edx, dword [edi + 0x18]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], ecx
mov edx, dword [edx + eax*4]
mov eax, dword [esp + 0x10]
mov edi, dword [edx + 0x14]
lea edx, [eax*4]
lea edx, [edx + edx*4]
mov esi, dword [edi + edx]
mov dword [esp + 0x1c], esi
mov esi, dword [edi + edx + 4]
test esi, esi
cmovs ebx, eax
mov dword [esp + 0x18], ebx
jns 0x4496a5
mov dword [esp + 4], 0
lea ebx, [edi + edx + 4]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x38]
cmp ecx, dword [ebx + edx]
jne 0x4496ef
test byte [esp + 4], 1
jne 0x4496d6
mov edx, dword [esp + 0x38]
mov ecx, esi
lea ebx, [eax + eax*4]
and ecx, 0xfffffff
cmp ecx, dword [edx + ebx*4 + 4]
jne 0x4496f6
test byte [esp + 4], 1
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
jne 0x44975b
jmp 0x44976d
test byte [esp + 4], 1
jne 0x449745
mov ebx, dword [esp + 0x18]
mov dl, 1
mov dword [esp + 4], edx
cmp ebx, eax
jge 0x449753
lea edx, [ebx + ebx*4]
sub eax, ebx
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0x14]
lea esi, [edx*4 + 4]
or dword [edi + esi], 0x3ffff
add esi, 0x14
dec eax
mov edx, dword [ebx + 0x18]
mov edx, dword [edx + ecx*4]
mov edi, dword [edx + 0x14]
jne 0x449718
mov ecx, dword [esp + 0x10]
lea eax, [ecx + ecx*4]
lea edx, [edi + eax*4 + 4]
mov eax, ecx
mov edi, ebx
mov esi, dword [edx]
mov dword [esp + 0x20], edx
jmp 0x449749
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
jmp 0x44975b
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
or esi, 0x3ffff
mov dword [ecx], esi
mov ecx, dword [edi + 0x12c]
inc eax
cmp eax, ecx
jl 0x449664
mov eax, dword [esp + 0x44]
mov ecx, dword [edi + 0x18]
mov esi, dword [esp + 0x14]
movzx eax, word [eax]
mov ecx, dword [ecx + esi*4]
cmp ax, word [ecx]
mov word [ecx], ax
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x78]
setne bl
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], eax
cmp dword [edi + 0x12c], 0
jle 0x449e0d
mov esi, ecx
mov dword [esp + 0x48], ecx
shr ecx, 0x10
mov dword [esp + 0x2c], eax
mov byte [esp + 0x1c], bl
mov byte [esp + 0x27], bl
xor ebx, ebx
mov dword [esp + 0x64], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x6c], ecx
mov ecx, eax
shr eax, 0x10
shr esi, 0x18
shr ecx, 0x18
mov dword [esp + 0x74], eax
xor eax, eax
mov dword [esp + 0x68], esi
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
lea eax, [eax*4]
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0x38]
mov dword [esp + 4], ebx
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x18]
mov ebx, dword [esi + edx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax + 0x14]
mov eax, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [ecx + edx + 4]
mov edx, dword [esi + edx]
mov dword [esp + 0x7c], ecx
xor ecx, ebx
mov dword [esp + 0x28], edx
bt ecx, 0x16
jae 0x449852
mov byte [esp + 0x27], 1
mov ecx, ebx
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x2c]
xor ecx, dword [esp + 0x40]
test dword [edi + 0x1040], ecx
mov edi, esi
setne cl
cmp byte [esi + eax + 8], bl
jne 0x4498be
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
lea esi, [esi + esi*4]
cmp byte [edi + esi*4 + 9], bh
jne 0x4498be
mov ebx, dword [esp + 0x74]
cmp byte [edi + esi*4 + 0xa], bl
jne 0x4498be
mov ebx, dword [esp + 0x70]
cmp byte [edi + esi*4 + 0xb], bl
jne 0x4498be
mov ebx, dword [esp + 0x48]
cmp byte [edi + esi*4 + 0xc], bl
jne 0x4498be
mov ebx, dword [esp + 0x48]
cmp byte [edi + esi*4 + 0xd], bh
jne 0x4498be
mov ebx, dword [esp + 0x6c]
cmp byte [edi + esi*4 + 0xe], bl
jne 0x4498be
mov ebx, dword [esp + 0x68]
cmp byte [edi + esi*4 + 0xf], bl
je 0x4498c0
mov cl, 1
mov ebx, dword [esp + 0x28]
lea esi, [ebx - 0x23ba]
cmp esi, 4
jb 0x4498ea
mov esi, dword [esp + 0x10]
test esi, esi
jle 0x4498ec
lea esi, [esi + esi*4]
mov esi, dword [edi + esi*4 - 0x14]
mov edi, 0xffffdc46
add esi, edi
cmp esi, 3
ja 0x4498ec
mov cl, 1
mov esi, ebx
mov edi, ebx
and ebx, 0xffffff00
mov edx, 0
and esi, 0xfffffe00
and edi, 0xfffffc00
cmp esi, 0xf000
cmove edx, ebx
cmp edi, 0xd800
cmove edx, ebx
cmp edx, dword [esp + 0x78]
mov dword [esp + 0x84], edx
je 0x449928
mov cl, 1
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x3c]
lea esi, [ebx + ebx*4]
lea edx, [edi + eax]
cmp dword [edi + esi*4 + 0x10], 0
mov edi, dword [esp + 8]
mov dword [esp + 0x50], esi
je 0x449997
mov cl, 1
cmp dword [edx], 0xdffe
jne 0x449953
mov cl, 1
jmp 0x44996c
cmp dword [esp + 0x10], 2
jl 0x44996c
cmp dword [edx - 0x14], 0xdfff
jne 0x44996c
cmp dword [edx - 0x28], 0xdffe
je 0x44994f
mov edi, dword [edi + 0x1060]
mov dword [esp + 0x20], edx
mov dl, byte [esp + 0x27]
mov dword [esp + 0x80], eax
mov ch, byte [edi + 4]
and dl, 1
mov byte [esp + 0x33], dl
mov bl, ch
or bl, dl
je 0x4499a6
mov ebx, dword [esp + 4]
jmp 0x4499e0
cmp dword [esp + 0x10], 0
jle 0x449947
cmp dword [edx - 4], 0
jne 0x449945
jmp 0x449947
mov edx, dword [esp + 0x7c]
mov ebx, dword [esp + 4]
and edx, 0xfffffff
cmp edx, dword [esp + 0x18]
jne 0x4499cb
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x34]
cmp dword [esi + edi*4], edx
je 0x4499ed
cmp ebx, 1
mov dh, 1
mov dl, 1
je 0x4499d6
mov dl, cl
test byte [esp + 0x1c], dh
je 0x4499de
mov edx, ecx
mov cl, dl
test cl, cl
jne 0x4499ed
mov eax, dword [esp + 0x18]
jmp 0x449ae6
mov edx, dword [esp + 0x38]
lea esi, [edx + eax + 8]
mov dl, byte [esp + 0x1c]
and dl, 1
jne 0x449a13
test ebx, ebx
jle 0x449a7c
mov ebx, dword [esp + 0x64]
mov cl, bl
mov ebx, dword [esp + 4]
and cl, 1
jne 0x449a17
jmp 0x449a7c
test ebx, ebx
jle 0x449a7c
sub esp, 0x1c
movsd xmm0, qword [esp + 0xa4]
movsd qword [esp + 0x14], xmm0
mov dword [esp + 0xc], ebx
mov byte [esp + 0x38], dl
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x30]
mov dword [esp], ecx
mov ecx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 4], edi
call fcn.00453090
mov dl, byte [esp + 0x38]
add esp, 0x1c
mov eax, dword [ebx + 0x1060]
mov ch, byte [eax + 4]
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x34], eax
mov edi, dword [esi]
mov ebx, dword [esi + 4]
test ch, ch
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], edi
je 0x449a99
mov ecx, edx
mov dword [esp + 0x64], ecx
mov al, byte [esp + 0x33]
mov edx, edi
mov esi, dword [esp + 0x84]
mov ecx, ebx
mov dword [esp + 0x48], ebx
shr ebx, 0x18
mov dword [esp + 0x2c], edi
shr edi, 0x18
shr edx, 0x10
shr ecx, 0x10
mov dword [esp + 0x68], ebx
xor ebx, ebx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x6c], ecx
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x18]
mov dword [esp + 0x78], esi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
lea ecx, [ecx + esi*4]
push eax
mov edi, dword [esp + 0x2c]
push edi
call fcn.00453262
add esp, 8
test al, al
mov byte [esp + 0x34], al
jne 0x449b10
mov byte [esp + 0x1c], 1
mov eax, dword [esp + 0x3c]
lea esi, [eax + esi*4 + 0x10]
push 0
mov eax, 2
push eax
push ebx
push eax
lea eax, [esp + 0xa4]
push eax
push dword [esp + 0x20]
call fcn.00410c1b
add esp, 0x18
lea ecx, [edi - 0x10001]
mov edx, eax
cmp ecx, 0xffffe
ja 0x449b6c
lea ecx, [edi - 0x10000]
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or ecx, 0xdc00
mov word [edx + ebx*2 + 2], cx
add eax, 0xffffd800
lea ecx, [ebx + 1]
jmp 0x449b70
mov eax, edi
mov ecx, ebx
mov word [edx + ebx*2], ax
mov edi, dword [esp + 8]
mov ebx, ecx
mov eax, dword [esi]
inc ebx
test eax, eax
je 0x449c72
mov esi, dword [esp + 0x20]
lea ecx, [eax + eax*4]
mov edi, ebx
mov dword [esp + 0xc], edx
mov ebx, dword [esi + ecx*4]
mov dword [esp + 4], ecx
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x449be1
cmp eax, 0xd900
je 0x449bcb
cmp eax, 0xd800
jne 0x449bf5
mov eax, dword [esp + 8]
movzx ecx, bl
mov eax, dword [eax + 0x1060]
lea eax, [eax + ecx*2 + 0x210]
jmp 0x449bf2
mov eax, dword [esp + 8]
movzx ecx, bl
mov eax, dword [eax + 0x1060]
lea eax, [eax + ecx*2 + 0x610]
jmp 0x449bf2
mov eax, dword [esp + 8]
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 + 0xa4]
push eax
push dword [esp + 0x20]
call fcn.00410c1b
add esp, 0x18
lea ecx, [ebx - 0x10001]
mov edx, eax
cmp ecx, 0xffffe
ja 0x449c49
add ebx, 0xffff0000
lea ecx, [edi + 1]
mov eax, ebx
and ebx, 0x3ff
shr eax, 0xa
or ebx, 0xdc00
add eax, 0xffffd800
mov word [edx + edi*2 + 2], bx
jmp 0x449c4d
mov eax, ebx
mov ecx, edi
mov word [edx + edi*2], ax
mov eax, dword [esp + 4]
mov ebx, ecx
inc ebx
lea esi, [esi + eax*4]
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x449b89
mov edi, dword [esp + 8]
or dword [esp + 0x40], 0x80000000
mov al, byte [esp + 0x34]
mov ecx, dword [esp + 0x14]
test al, al
jne 0x449d0e
mov eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0xc], edx
mov ecx, dword [eax + ecx*4]
mov edx, ebx
push dword [esp + 0x20]
call fcn.00452252
mov ecx, dword [esp + 0x18]
add esp, 4
mov eax, dword [edi + 0x18]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x28]
cmp dword [esp + 0x4c], ebx
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [eax + esi], edx
mov edx, dword [esp + 0x18]
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 + 0x48]
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 + 0x2c]
mov dword [eax + esi + 8], edx
jne 0x449d06
mov eax, dword [edi + 0x18]
mov edx, dword [esp + 0x50]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x14]
or dword [eax + edx*4 + 4], 0x80000000
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 4]
bt dword [esp + 0x18], 0x16
jb 0x449d1f
mov eax, dword [esp + 0x10]
jmp 0x449db2
mov eax, dword [esp + 0x10]
inc eax
cmp eax, dword [edi + 0x12c]
jge 0x449db2
add dword [esp + 0x20], 0x14
cmp ecx, dword [esp + 0x60]
mov dword [esp + 4], ebx
mov ebx, eax
mov dword [esp + 0xc], edx
jne 0x449d66
cmp ebx, dword [esp + 0x58]
jne 0x449d66
push 0x1672
push str..._terminal.c
push str.__i__our_curs_y__j__our_curs_x_
call fcn.0047bdbf
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [edi + 0x18]
mov esi, dword [esp + 0x20]
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 + 0x10], eax
push dword [esi + 4]
push dword [esi]
call fcn.00453262
add esp, 8
test al, al
jne 0x449d95
mov byte [esp + 0x1c], 1
mov ecx, dword [esp + 0x10]
mov edx, ebx
push esi
call fcn.00452252
add esp, 4
mov eax, ebx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 4]
inc eax
cmp eax, dword [edi + 0x12c]
jl 0x449809
test byte [esp + 0x1c], 1
mov esi, dword [esp + 0x44]
mov dword [esp + 0xc], edx
je 0x449e11
test ebx, ebx
jle 0x449e11
sub esp, 0x1c
movsd xmm0, qword [esp + 0xa4]
movsd qword [esp + 0x14], xmm0
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, esi
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x5c]
mov dword [esp], ecx
mov ecx, edi
mov dword [esp + 0x10], eax
call fcn.00453090
add esp, 0x1c
jmp 0x449e11
mov esi, dword [esp + 0x44]
cmp byte [esi + 0xc], 0
je 0x449e2b
push dword [esi + 0x14]
call fcn.00410c0e
add esp, 4
push esi
call fcn.00410c0e
add esp, 4
mov eax, dword [esp + 0x14]
inc eax
cmp eax, dword [edi + 0x128]
jl 0x449270
push dword [esp + 0x38]
call fcn.00410c0e
add esp, 4
push dword [esp + 0xc]
call fcn.00410c0e
add esp, 4
mov ecx, dword [esp + 0x98]
xor ecx, ebp
call fcn.0046fa9a
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret