Function at 0x459e30
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x78
mov dword [0x4d0178], 2
mov dword [0x59c320], 0x200000
push ebx
push ebp
or ebp, 0xffffffff
push esi
test eax, eax
push edi
mov dword [0x59c324], 0x100000
mov byte [0x59c334], 0
mov byte [0x59c335], 2
je 0x459f0b
cmp dword [0x4f573c], ebp
je 0x45a048
mov eax, dword [str.1.23]
mov edx, dword [0x4d07d8]
mov ecx, dword [str.SAVEGAME.TMP]
mov edi, dword [eax + 2]
mov eax, dword [0x4d07dc]
mov dword [esp + 0x64], edx
mov dword [esp + 0x60], ecx
mov cl, byte [0x4d07e0]
lea edx, [esp + 0x60]
push edx
mov dword [esp + 0x6c], eax
mov byte [esp + 0x70], cl
call fcn.0049a510
mov esi, eax
add esp, 4
test esi, esi
je 0x459ee5
lea eax, [esp + 0x24]
push 4
push eax
push esi
call fcn.0049a710
mov eax, dword [esp + 0x30]
add esp, 0xc
cmp eax, edi
je 0x45ace1
push esi
call fcn.0049a800
add esp, 4
mov edi, dword [0x5a4520]
mov ecx, 0xfba
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [0x5a4520]
mov dword [ecx], 0xcafebabe
mov dword [0x4f573c], ebp
jmp 0x45a048
mov eax, dword [0x4e5394]
mov ecx, dword [0x4f573c]
cmp ecx, eax
je 0x45a048
cmp eax, 5
jge 0x45a043
mov edx, dword [str.1.23]
test eax, eax
mov edi, dword [edx + 2]
jge 0x459f5c
mov eax, dword [str.SAVEGAME.TMP]
mov ecx, dword [0x4d07d8]
mov edx, dword [0x4d07dc]
mov dword [esp + 0x60], eax
mov al, byte [0x4d07e0]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
mov byte [esp + 0x6c], al
jmp 0x459f6f
push eax
lea ecx, [esp + 0x64]
push str.SAVEGAME._03u
push ecx
call fcn.004b77e0
add esp, 0xc
lea edx, [esp + 0x60]
push edx
call fcn.0049a510
mov esi, eax
add esp, 4
test esi, esi
je 0x45a023
lea eax, [esp + 0x24]
push 4
push eax
push esi
call fcn.0049a710
mov eax, dword [esp + 0x30]
add esp, 0xc
cmp eax, edi
je 0x459fa9
push esi
call fcn.0049a800
add esp, 4
jmp 0x45a023
mov ebx, dword [0x5a4520]
lea ecx, [esp + 0x1c]
push 4
push ecx
push esi
mov dword [esp + 0x2c], 0x3e80
call fcn.0049a710
mov edx, dword [esp + 0x28]
add esp, 0xc
push edx
call fcn.004987e0
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x1c]
push eax
push edi
push esi
call fcn.0049a710
mov ecx, dword [esp + 0x28]
add esp, 0xc
lea edx, [esp + 0x20]
push ecx
push edi
push edx
push ebx
call fcn.0049c920
add esp, 0x10
push edi
call fcn.004987f0
mov eax, dword [0x5a4520]
add esp, 4
add eax, 0x3e80
push 0x68
push eax
push esi
call fcn.0049a710
add esp, 0xc
push esi
call fcn.0049a800
add esp, 4
jmp 0x45a03e
mov edi, dword [0x5a4520]
mov ecx, 0xfba
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [0x5a4520]
mov dword [ecx], 0xcafebabe
mov eax, dword [0x4e5394]
mov dword [0x4f573c], eax
call fcn.00447100
call fcn.00444740
mov eax, dword [0x5f7880]
mov edi, dword [0x5d12b0]
test eax, eax
lea edx, [esp + 0x38]
jne 0x45a06b
mov edi, dword [0x5d12ac]
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [0x60879c]
and ecx, 3
cmp eax, 0x190
rep movsb byte es:[edi], byte [esi]
jg 0x45a0a0
mov ecx, dword [0x54f8f4]
inc ecx
mov dword [esp + 0x1c], ecx
jmp 0x45a0aa
mov edx, dword [0x54f8f4]
mov dword [esp + 0x1c], edx
lea eax, [esp + 0x38]
push eax
call fcn.004480f0
mov ecx, dword [0x54f8f4]
mov eax, dword [0x608798]
add esp, 4
lea edx, [esp + 0x38]
push ecx
push edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
mov eax, dword [0x60879c]
add eax, eax
cdq
and edx, 3
add eax, edx
sar eax, 2
push eax
call fcn.0047f2d0
mov eax, dword [0x60879c]
mov ecx, dword [0x608798]
cdq
and edx, 0xf
add esp, 0x10
add eax, edx
sar eax, 4
mov dword [esp + 0x18], eax
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x2aaaaaab
mov ebp, edx
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
xor ebx, ebx
mov dword [esp + 0x14], edx
cmp ebx, 5
jge 0x45a161
mov eax, dword [esp + 0x1c]
mov dl, bl
add dl, 0x31
push eax
mov eax, dword [0x60879c]
mov byte [esp + 0x3c], dl
cdq
sub eax, edx
lea ecx, [esp + 0x3c]
sar eax, 1
mov edx, 0x8010
push ecx
sub edx, eax
push ebp
push edx
mov byte [esp + 0x49], 0
call fcn.0047f2d0
add esp, 0x10
cmp ebx, dword [0x4e5394]
jne 0x45a26e
mov eax, dword [0x4d083c]
cmp ebx, 5
mov dword [esp + 0x38], eax
jne 0x45a18d
mov ecx, dword [esp + 0x14]
mov edi, dword [0x5d14b4]
add ebp, ecx
lea edx, [esp + 0x38]
jmp 0x45a1e4
mov ecx, dword [0x5a4520]
lea edi, [ebx + 0x1fc]
shl edi, 5
add edi, ecx
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x38]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x8c]
mov ecx, edx
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
je 0x45a209
call fcn.0048ea90
test al, 0x80
je 0x45a209
lea edx, [esp + 0x38]
mov edi, 0x4d026c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x38]
push eax
push ecx
push 0x8000
call fcn.0048ea90
mov edx, dword [esp + 0x24]
shr eax, 1
push eax
add edx, 8
push ebp
push edx
call fcn.0047fa60
mov ecx, dword [0x60879c]
mov eax, 0x66666667
shl ecx, 0x10
imul ecx
sar edx, 1
mov eax, edx
mov ecx, ebp
shr eax, 0x1f
add esp, 0x18
add edx, eax
shl ecx, 0x10
mov dword [0x59c340], edx
mov dword [0x59c344], ecx
mov byte [0x59c354], 0
mov byte [0x59c355], 0
jmp 0x45a2ef
mov dx, word [0x4ca814]
mov al, byte [0x4ca816]
cmp ebx, 5
mov word [esp + 0x38], dx
mov byte [esp + 0x3a], al
jne 0x45a29a
mov ecx, dword [esp + 0x14]
mov edi, dword [0x5d14b4]
add ebp, ecx
lea edx, [esp + 0x38]
jmp 0x45a2af
mov ecx, dword [0x5a4520]
lea edi, [ebx + 0x1fc]
shl edi, 5
add edi, ecx
lea edx, [esp + 0x38]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x1c]
mov ecx, edx
mov edx, dword [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x38]
push eax
push ecx
add edx, 8
push ebp
push edx
call fcn.0047f2d0
add esp, 0x10
mov edx, dword [esp + 0x14]
add ebp, edx
inc ebx
cmp ebx, 6
jl 0x45a129
mov eax, dword [0x5a4520]
mov ecx, dword [eax]
mov eax, dword [0x608764]
cmp ecx, 0xcafebabe
jne 0x45a620
mov ecx, dword [0x60879c]
cmp eax, 8
jne 0x45a472
cmp ecx, 0x190
jg 0x45a374
mov eax, 0x55555556
mov esi, dword [0x608798]
imul ecx
mov ecx, edx
mov eax, esi
shr ecx, 0x1f
add edx, ecx
mov edi, edx
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
sar eax, 2
imul eax, dword [0x6087a0]
add edx, eax
mov eax, 0x2aaaaaab
lea ecx, [edx + edi*2 - 8]
imul esi
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edx
jmp 0x45a3a0
mov eax, ecx
cdq
sub eax, edx
mov edi, eax
mov eax, dword [0x608798]
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
sar eax, 2
mov ecx, eax
imul ecx, dword [0x6087a0]
sar edi, 1
add ecx, edi
lea ecx, [ecx + edx - 8]
test eax, eax
jle 0x45a5f7
mov ebp, eax
mov bl, 0x88
test edi, edi
mov byte [esp + 0x10], bl
jle 0x45a402
mov esi, edi
mov eax, dword [0x6087b0]
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
xor dword [edx + 0x608a20], eax
mov edx, dword [esp + 0x10]
and eax, 7
and edx, 0xff
lea eax, [eax + edx + 0x83]
cdq
sub eax, edx
sar eax, 1
mov byte [ecx], al
inc ecx
dec esi
mov byte [esp + 0x10], al
jne 0x45a3b6
mov eax, dword [0x6087a0]
sub eax, edi
add ecx, eax
test edi, edi
jle 0x45a45d
mov esi, edi
mov eax, dword [0x6087b0]
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
xor dword [edx + 0x608a20], eax
mov edx, dword [esp + 0x10]
and eax, 7
and edx, 0xff
lea eax, [eax + edx + 0x88]
cdq
sub eax, edx
sar eax, 1
mov byte [ecx], al
inc ecx
dec esi
mov byte [esp + 0x10], al
jne 0x45a411
mov eax, dword [0x6087a0]
sub eax, edi
add ecx, eax
dec ebp
jne 0x45a3ac
jmp 0x45a5f7
cmp ecx, 0x190
jg 0x45a4c0
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [0x608798]
mov eax, ecx
mov ebp, edx
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
sar eax, 2
imul eax, dword [0x6087a0]
add edx, eax
mov eax, 0x2aaaaaab
lea esi, [edx + ebp*4 - 0x10]
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edx
jmp 0x45a4ec
mov eax, ecx
cdq
sub eax, edx
mov ebp, eax
mov eax, dword [0x608798]
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
sar eax, 2
mov ecx, eax
imul ecx, dword [0x6087a0]
sar ebp, 1
add edx, ecx
lea esi, [edx + ebp*2 - 0x10]
test eax, eax
jle 0x45a5f7
mov dword [esp + 0x1c], eax
test ebp, ebp
mov byte [esp + 0x10], 0x88
jle 0x45a568
mov ecx, 0x88
mov edi, ebp
mov eax, dword [0x6087b0]
add esi, 2
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
mov ebx, dword [edx + 0x608a20]
xor ebx, eax
and eax, 7
mov dword [edx + 0x608a20], ebx
lea eax, [eax + ecx + 0x83]
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x10], al
mov ecx, dword [esp + 0x10]
and ecx, 0xff
dec edi
mov ax, word [ecx*2 + 0x5a4540]
mov word [esi - 2], ax
jne 0x45a508
mov ecx, dword [0x6087a0]
lea ebx, [ebp + ebp]
sub ecx, ebx
add esi, ecx
test ebp, ebp
jle 0x45a5de
mov ecx, dword [esp + 0x10]
mov edi, ebp
and ecx, 0xff
mov eax, dword [0x6087b0]
add esi, 2
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
xor dword [edx + 0x608a20], eax
and eax, 7
lea eax, [eax + ecx + 0x88]
cdq
sub eax, edx
sar eax, 1
mov byte [esp + 0x10], al
mov ecx, dword [esp + 0x10]
and ecx, 0xff
dec edi
mov ax, word [ecx*2 + 0x5a4540]
mov word [esi - 2], ax
jne 0x45a586
mov ecx, dword [0x6087a0]
mov eax, dword [esp + 0x1c]
sub ecx, ebx
add esi, ecx
dec eax
mov dword [esp + 0x1c], eax
jne 0x45a4f8
mov edx, dword [0x54f8f4]
mov eax, dword [0x5d14c8]
mov ecx, dword [0x608798]
push edx
push eax
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
sub ecx, eax
add ecx, 0x10
push ecx
jmp 0x45acbc
cmp eax, 8
jne 0x45a902
mov edi, dword [0x60879c]
cmp edi, 0x190
jg 0x45a695
mov eax, 0x55555556
mov esi, dword [0x608798]
imul edi
mov ecx, edx
mov eax, esi
shr ecx, 0x1f
add edx, ecx
mov ebp, edx
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
sar eax, 2
imul eax, dword [0x6087a0]
add edx, eax
mov eax, 0x1e00000
lea ecx, [edx + ebp*2 - 8]
cdq
idiv edi
mov dword [esp + 0x1c], eax
mov eax, 0x12c0000
cdq
idiv esi
mov dword [esp + 0x14], eax
mov eax, 0x2aaaaaab
imul esi
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ebx, edx
jmp 0x45a6e0
mov ebx, dword [0x608798]
mov eax, edi
cdq
sub eax, edx
mov ebp, eax
mov eax, ebx
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
mov esi, eax
mov eax, 0x1400000
sar esi, 2
mov ecx, esi
imul ecx, dword [0x6087a0]
sar ebp, 1
add ecx, ebp
lea ecx, [ecx + edx - 8]
cdq
idiv edi
mov dword [esp + 0x1c], eax
mov eax, 0xc80000
cdq
idiv ebx
mov ebx, esi
mov dword [esp + 0x14], eax
xor edi, edi
xor esi, esi
mov eax, esi
add esi, 3
cdq
and edx, 3
add eax, edx
sar eax, 2
sub al, 0x7c
mov byte [esp + edi + 0x28], al
inc edi
cmp esi, 0x30
jl 0x45a6e4
mov eax, dword [0x608798]
mov dword [esp + 0x18], 0
cmp eax, 0x190
jle 0x45a814
test ebx, ebx
jle 0x45aba3
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x18]
mov edx, dword [0x5a4520]
sar eax, 0x10
xor edi, edi
mov byte [esp + 0x10], 0x88
lea esi, [eax + eax*4]
shl esi, 5
add esi, edx
test ebp, ebp
jle 0x45a773
mov ebx, ebp
mov eax, edi
xor edx, edx
sar eax, 0x10
mov dl, byte [eax + esi]
mov eax, dword [esp + 0x10]
and eax, 0xff
lea eax, [edx + eax + 0x80]
cdq
sub eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 1
mov byte [ecx], al
inc ecx
add edi, edx
dec ebx
mov byte [esp + 0x10], al
jne 0x45a744
mov edx, dword [0x6087a0]
mov eax, dword [esp + 0x14]
sub edx, ebp
add ecx, edx
mov edx, dword [esp + 0x18]
add edx, eax
test ebp, ebp
mov dword [esp + 0x18], edx
jle 0x45a7e9
mov esi, ebp
mov eax, dword [0x6087a0]
mov edx, ecx
sub edx, eax
mov al, byte [edx]
mov byte [esp + 0x10], al
mov eax, dword [0x6087b0]
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
mov ebx, dword [edx + 0x608a20]
xor ebx, eax
and al, 3
mov dword [edx + 0x608a20], ebx
mov edx, dword [esp + 0x10]
and edx, 0xff
mov dl, byte [esp + edx - 0x58]
sub dl, al
mov byte [ecx], dl
inc ecx
dec esi
jne 0x45a791
mov eax, dword [0x6087a0]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
sub eax, ebp
add ecx, eax
mov eax, dword [esp + 0x20]
add esi, edx
dec eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], eax
jne 0x45a722
jmp 0x45aba3
test ebx, ebx
jle 0x45aba3
mov dword [esp + 0x20], ebx
mov edi, dword [esp + 0x18]
mov esi, dword [0x5a4520]
mov eax, edi
sar eax, 0x10
lea eax, [eax + eax*4]
shl eax, 5
add eax, esi
xor esi, esi
test ebp, ebp
jle 0x45a856
mov edx, ebp
mov ebx, esi
sar ebx, 0x10
mov bl, byte [ebx + eax]
add bl, 0x80
mov byte [ecx], bl
mov ebx, dword [esp + 0x1c]
inc ecx
add esi, ebx
dec edx
jne 0x45a83f
mov eax, dword [0x6087a0]
mov edx, dword [0x5a4520]
sub eax, ebp
add ecx, eax
mov eax, dword [esp + 0x14]
add edi, eax
mov eax, edi
mov dword [esp + 0x18], edi
sar eax, 0x10
xor edi, edi
lea esi, [eax + eax*4]
shl esi, 5
add esi, edx
test ebp, ebp
jle 0x45a8d7
mov ebx, ebp
mov edx, edi
sar edx, 0x10
mov al, byte [edx + esi]
mov byte [esp + 0x10], al
mov eax, dword [0x6087b0]
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x608a20]
mov dword [0x6087b0], edx
xor dword [edx + 0x608a20], eax
mov edx, dword [esp + 0x10]
and edx, 0xff
and al, 1
mov dl, byte [esp + edx + 0x28]
sub dl, al
mov byte [ecx], dl
mov edx, dword [esp + 0x1c]
inc ecx
add edi, edx
dec ebx
jne 0x45a884
mov eax, dword [0x6087a0]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
sub eax, ebp
add ecx, eax
mov eax, dword [esp + 0x20]
add esi, edx
dec eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], eax
jne 0x45a820
jmp 0x45aba3
mov esi, dword [0x60879c]
cmp esi, 0x190
jg 0x45a970
mov eax, 0x55555556
mov ebx, dword [0x608798]
imul esi
mov eax, edx
mov ecx, dword [0x6087a4]
shr eax, 0x1f
add edx, eax
mov eax, ebx
mov ebp, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
imul eax, dword [0x6087a0]
add ecx, eax
mov eax, 0x1e00000
cdq
idiv esi
lea ecx, [ecx + ebp*4 - 0x10]
mov dword [esp + 0x1c], eax
mov eax, 0x12c0000
cdq
idiv ebx
mov dword [esp + 0x14], eax
mov eax, 0x2aaaaaab
imul ebx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x10], edx
jmp 0x45a9bd
mov ebx, dword [0x608798]
mov eax, esi
cdq
sub eax, edx
mov ebp, eax
mov eax, ebx
cdq
and edx, 3
add eax, edx
mov edx, dword [0x6087a4]
mov edi, eax
mov eax, 0x1400000
sar edi, 2
mov ecx, edi
mov dword [esp + 0x10], edi
imul ecx, dword [0x6087a0]
sar ebp, 1
add edx, ecx
lea ecx, [edx + ebp*2 - 0x10]
cdq
idiv esi
mov dword [esp + 0x1c], eax
mov eax, 0xc80000
cdq
idiv ebx
mov dword [esp + 0x14], eax
xor edi, edi
xor esi, esi
mov eax, esi
add esi, 3
cdq
and edx, 3
add eax, edx
sar eax, 2
sub al, 0x7c
mov byte [esp + edi + 0x28], al
inc edi
cmp esi, 0x30
jl 0x45a9c1
mov eax, dword [esp + 0x10]
xor edx, edx
cmp ebx, 0x190
mov dword [esp + 0x18], edx
jle 0x45aacc
test eax, eax
jle 0x45aba3
mov dword [esp + 0x24], eax
mov edi, dword [0x5a4520]
mov eax, edx
sar eax, 0x10
lea esi, [eax + eax*4]
shl esi, 5
add esi, edi
xor edi, edi
test ebp, ebp
jle 0x45aa66
mov eax, 0x88
mov dword [esp + 0x20], ebp
mov edx, edi
xor ebx, ebx
sar edx, 0x10
add ecx, 2
mov bl, byte [edx + esi]
lea eax, [ebx + eax + 0x80]
mov ebx, dword [esp + 0x1c]
cdq
sub eax, edx
add edi, ebx
sar eax, 1
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x10]
and eax, 0xff
mov dx, word [eax*2 + 0x5a4540]
mov word [ecx - 2], dx
mov edx, dword [esp + 0x20]
dec edx
mov dword [esp + 0x20], edx
jne 0x45aa1f
mov edx, dword [esp + 0x18]
mov eax, dword [0x6087a0]
mov edi, dword [esp + 0x14]
lea esi, [ebp + ebp]
add edx, edi
sub eax, esi
add ecx, eax
test ebp, ebp
jle 0x45aaa5
mov edi, ebp
mov ebx, dword [0x6087a0]
mov eax, ecx
sub eax, ebx
mov ebx, dword [0x58a630]
shr ebx, 1
mov al, byte [eax]
add ecx, 2
shr al, 1
and al, bl
dec edi
movzx ax, al
mov word [ecx - 2], ax
jne 0x45aa7f
mov eax, dword [0x6087a0]
sub eax, esi
mov esi, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x24]
add edx, esi
dec eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x24], eax
jne 0x45a9fd
jmp 0x45aba3
test eax, eax
jle 0x45aba3
mov dword [esp + 0x20], eax
mov ebx, dword [0x5a4520]
mov eax, edx
sar eax, 0x10
xor esi, esi
lea eax, [eax + eax*4]
shl eax, 5
add eax, ebx
test ebp, ebp
jle 0x45ab1f
mov dword [esp + 0x24], ebp
mov edi, esi
xor ebx, ebx
sar edi, 0x10
add ecx, 2
mov bl, byte [edi + eax]
mov di, word [ebx*2 + 0x5a4640]
mov ebx, dword [esp + 0x1c]
mov word [ecx - 2], di
mov edi, dword [esp + 0x24]
add esi, ebx
dec edi
mov dword [esp + 0x24], edi
jne 0x45aaf5
mov edi, dword [esp + 0x14]
mov esi, dword [0x6087a0]
lea eax, [ebp + ebp]
add edx, edi
sub esi, eax
mov edi, dword [0x5a4520]
mov eax, edx
add ecx, esi
sar eax, 0x10
lea esi, [eax + eax*4]
shl esi, 5
add esi, edi
xor edi, edi
test ebp, ebp
jle 0x45ab80
mov dword [esp + 0x24], ebp
mov ebx, dword [0x58a630]
mov eax, edi
sar eax, 0x10
shr ebx, 1
mov al, byte [eax + esi]
add ecx, 2
shr al, 1
and al, bl
mov ebx, dword [esp + 0x1c]
movzx ax, al
mov word [ecx - 2], ax
mov eax, dword [esp + 0x24]
add edi, ebx
dec eax
mov dword [esp + 0x24], eax
jne 0x45ab50
mov esi, dword [0x6087a0]
lea eax, [ebp + ebp]
sub esi, eax
mov eax, dword [esp + 0x20]
add ecx, esi
mov esi, dword [esp + 0x14]
add edx, esi
dec eax
mov dword [esp + 0x20], eax
jne 0x45aad8
mov ebx, dword [0x608798]
mov cx, word [0x4ca814]
mov eax, ebx
mov word [esp + 0x38], cx
cdq
and edx, 3
or ecx, 0xffffffff
add eax, edx
mov dl, byte [0x4ca816]
sar eax, 2
sub ebx, eax
mov eax, dword [0x5a4520]
add ebx, 0x10
mov byte [esp + 0x3a], dl
lea edi, [eax + 0x3ec0]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x38]
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
mov eax, dword [0x54f8f4]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
inc eax
push eax
mov eax, dword [0x60879c]
cdq
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3c]
sub eax, edx
push ecx
push ebx
sar eax, 1
push eax
call fcn.0047f2d0
mov eax, dword [0x5a4520]
add esp, 0x10
mov ecx, dword [eax + 0x3ee0]
mov eax, dword [eax + 0x3ee4]
cmp eax, 4
ja case.default.0x45ac39
jmp dword [eax*4 + 0x45ad64]
mov edi, dword [0x5d14d0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x38]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x45aca3
mov edx, dword [0x5d1334]
jmp 0x45ac87
mov edx, dword [0x5d1338]
jmp 0x45ac87
mov edx, dword [0x5d133c]
jmp 0x45ac87
mov edx, dword [0x5d1340]
mov eax, dword [0x5d14d4]
push edx
push ecx
lea ecx, [esp + 0x40]
push eax
push ecx
call fcn.004b77e0
add esp, 0x10
jmp 0x45aca3
mov byte [esp + 0x38], 0
mov al, byte [esp + 0x38]
add ebx, 0x10
test al, al
je 0x45accf
mov edx, dword [0x54f8f4]
lea eax, [esp + 0x38]
inc edx
push edx
push eax
push ebx
mov eax, dword [0x60879c]
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.0047f2d0
add esp, 0x10
push 1
call fcn.00447130
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ebx, dword [0x5a4520]
lea ecx, [esp + 0x1c]
push 4
push ecx
push esi
mov dword [esp + 0x2c], 0x3e80
call fcn.0049a710
mov edx, dword [esp + 0x28]
add esp, 0xc
push edx
call fcn.004987e0
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x1c]
push eax
push edi
push esi
call fcn.0049a710
mov ecx, dword [esp + 0x28]
add esp, 0xc
lea edx, [esp + 0x20]
push ecx
push edi
push edx
push ebx
call fcn.0049c920
add esp, 0x10
push edi
call fcn.004987f0
mov eax, dword [0x5a4520]
add esp, 4
add eax, 0x3e80
push 0x68
push eax
push esi
call fcn.0049a710
add esp, 0xc
push esi
call fcn.0049a800
add esp, 4
mov dword [0x4f573c], ebp
jmp 0x45a048