Function at 0x49b8d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x34
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
xor ebx, ebx
mov esi, ecx
mov dword [esp + 0x2c], eax
cmp dword [ebp + 0x1c], ebx
je 0x49b92e
push 0x49
mov ecx, edi
call fcn.004a1dd0
push 0x3a
mov ecx, edi
call fcn.004a1dd0
push 0xffffffffffffff93
mov ecx, edi
call fcn.004a1dd0
push 0xffffffffffffff86
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x478], ebx
mov dword [esi + 0x47c], ebx
mov dword [esi + 0x480], 1
mov dword [esi + 0x484], ebx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov dword [esp + 0x28], ecx
cmp eax, ecx
jge 0x49d0f1
jmp 0x49b948
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x20]
push edx
push 1
push eax
mov ecx, esi
mov dword [esp + 0x2c], 1
call fcn.0049a560
cmp dword [esp + 0x20], 0
mov dword [esp + 0x24], eax
je 0x49d0f1
mov eax, dword [esi + 0x478]
mov ecx, eax
add ecx, ecx
cmp dword [esi + ecx*8 + 0x158], 0
jne case.0x49b9b2.11
lea ebx, [eax - 1]
lea edx, [ebx + 0x17]
add edx, edx
mov dword [esi + 0x478], ebx
mov eax, dword [esi + edx*8]
cmp eax, 0xc00
jg 0x49cb01
je case.0x49cb16.3075
dec eax
cmp eax, 0x1e
ja case.0x49cb16.3075
jmp dword [eax*4 + 0x49d13c]
cmp dword [esi + 0x480], 0
je 0x49b9dc
mov eax, dword [ebp + 0x18]
push eax
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
fldz
xor ecx, ecx
mov dword [esp + 0x18], ecx
cmp dword [esi + 0x478], ecx
jle 0x49bab7
lea ebx, [esi + 0x180]
jmp 0x49ba08
fld qword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
fldz
push edi
fcomp qword [ebx]
fnstsw ax
test ah, 0x41
jne 0x49ba51
fld qword [ebx - 0x10]
mov edx, dword [ebx - 4]
fadd qword [ebx]
or edx, dword [ebx - 0x14]
or ecx, edx
faddp st(1)
push ecx
mov dword [esp + 0x24], ecx
sub esp, 8
fst qword [esp + 0x40]
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [ebx - 4]
fld qword [ebx]
push edi
fchs
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
jmp 0x49ba92
or ecx, dword [ebx - 0x14]
fadd qword [ebx - 0x10]
push ecx
mov dword [esp + 0x24], ecx
fst qword [esp + 0x38]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx]
mov ecx, dword [ebx - 4]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx]
fadd qword [esp + 0x30]
mov edx, dword [ebx - 4]
or dword [esp + 0x1c], edx
fstp qword [esp + 0x30]
push 1
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49ba00
jmp 0x49bab9
fstp st(0)
mov eax, dword [esi + 0x478]
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je 0x49baf2
mov eax, dword [ebp + 0x18]
push eax
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
fldz
xor ecx, ecx
mov dword [esp + 0x18], ecx
cmp dword [esi + 0x478], ecx
jle 0x49bab7
lea ebx, [esi + 0x180]
jmp 0x49bb18
fld qword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
fldz
push edi
fcomp qword [ebx]
fnstsw ax
test ah, 0x41
jne 0x49bb61
fld qword [ebx - 0x10]
mov edx, dword [ebx - 0x14]
fadd qword [ebx]
or edx, dword [ebx - 4]
or ecx, edx
faddp st(1)
push ecx
mov dword [esp + 0x24], ecx
sub esp, 8
fst qword [esp + 0x40]
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [ebx - 4]
fld qword [ebx]
push edi
fchs
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
jmp 0x49bba2
or ecx, dword [ebx - 0x14]
fadd qword [ebx - 0x10]
push ecx
mov dword [esp + 0x24], ecx
fst qword [esp + 0x38]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx]
mov ecx, dword [ebx - 4]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esp + 0x30]
fadd qword [ebx]
mov edx, dword [ebx - 4]
or dword [esp + 0x1c], edx
fstp qword [esp + 0x30]
push 3
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49bb10
jmp 0x49bab9
cmp dword [esi + 0x480], 0
je 0x49bbf2
mov eax, dword [ebp + 0x18]
xor ecx, ecx
cmp ebx, 2
sete cl
push eax
push edi
push ecx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x49bc0e
push 9
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x484], 0
mov edx, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 4
mov ecx, edi
call fcn.004a1dd0
jmp case.0x49cb16.3075
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49d0cf
lea ebx, [esi + 0x170]
lea ecx, [ecx]
mov eax, dword [ebx - 4]
fld qword [ebx]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov ecx, dword [ebx + 0xc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 5
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49bc50
jmp 0x49d0cf
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49d0cf
lea ebx, [esi + 0x170]
mov edx, dword [ebx - 4]
fld qword [ebx]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov al, byte [esp + 0x18]
and al, 1
or al, 6
movzx ecx, al
push ecx
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
inc eax
add ebx, 0x10
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49bcb3
jmp 0x49d0cf
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49d0cf
lea ebx, [esi + 0x170]
lea esp, [esp]
mov edx, dword [ebx - 4]
fld qword [ebx]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov al, byte [esp + 0x18]
not al
and al, 1
or al, 6
movzx ecx, al
push ecx
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
inc eax
add ebx, 0x10
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49bd10
jmp 0x49d0cf
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49d0cf
lea ebx, [esi + 0x170]
mov edx, dword [ebx - 4]
fld qword [ebx]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0xc]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov ecx, dword [ebx + 0x1c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov edx, dword [ebx + 0x2c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x40]
mov eax, dword [ebx + 0x3c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x50]
mov ecx, dword [ebx + 0x4c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 6
add ebx, 0x60
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49bd68
jmp 0x49d0cf
cmp ebx, 1
jl case.0x49b9b2.11
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 4]
cmp eax, 0x4d8
jge 0x49be2d
mov dword [esp + 0x1c], 0x6b
jmp 0x49be48
xor ecx, ecx
cmp eax, 0x846c
setge cl
dec ecx
and ecx, 0xffff846b
add ecx, 0x8000
mov dword [esp + 0x1c], ecx
lea edx, [ebx + 0x16]
add edx, edx
fld qword [esi + edx*8]
call fcn.00512de0
add eax, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x3c]
push edx
push eax
mov eax, dword [ebp + 0x14]
dec ebx
push eax
mov ecx, esi
mov dword [esi + 0x478], ebx
mov dword [esp + 0x30], 1
call fcn.0049a9d0
cmp dword [esp + 0x20], 0
je case.0x49b9b2.11
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x3c]
push 0
push ecx
mov ecx, dword [esp + 0x40]
push edx
push edi
push eax
push ecx
mov ecx, esi
call fcn.0049b8d0
jmp case.0x49b9b2.11
cmp dword [esi + 0x480], 0
je 0x49bedd
cmp ebx, 1
je 0x49bec1
cmp ebx, 5
je 0x49bec1
xor eax, eax
jmp 0x49bec6
mov eax, 1
mov edx, dword [ebp + 0x18]
push edx
push edi
push eax
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x49bef9
push 9
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x484], 0
mov eax, dword [esi + 0x478]
cmp eax, 4
jne 0x49bf9d
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x170]
mov eax, dword [esi + 0x16c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov ecx, dword [esi + 0x17c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov edx, dword [esi + 0x18c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov eax, dword [esi + 0x19c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 6
push 0xc
mov ecx, edi
call fcn.004a1dd0
mov ecx, eax
call fcn.004a1dd0
jmp case.0x49cb16.3075
test eax, eax
jne case.0x49cb16.3075
push 0xe
mov ecx, edi
call fcn.004a1dd0
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je case.0x49cb16.3075
mov ecx, dword [ebp + 0x18]
xor edx, edx
test ebx, ebx
setg dl
push ecx
push edi
mov ecx, esi
push edx
call fcn.0049ac20
mov dword [esi + 0x480], 0
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je 0x49bab9
mov eax, dword [ebp + 0x18]
push eax
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
jmp 0x49bab9
cmp dword [esi + 0x480], 0
je 0x49c032
mov ecx, dword [ebp + 0x18]
push ecx
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
mov eax, dword [esi + 0x478]
test eax, eax
jle 0x49c047
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
mov edx, dword [esi + 0x47c]
add edx, 7
sar edx, 3
add dword [esp + 0x24], edx
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je 0x49c07f
mov eax, dword [ebp + 0x18]
push eax
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
mov eax, dword [esi + 0x478]
test eax, eax
jle 0x49c094
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
mov ecx, dword [esi + 0x47c]
add ecx, 7
sar ecx, 3
add dword [esp + 0x24], ecx
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je 0x49c0d1
mov edx, dword [ebp + 0x18]
xor eax, eax
cmp ebx, 3
sete al
push edx
push edi
mov ecx, esi
push eax
call fcn.0049ac20
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x49c0ed
push 9
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x484], 0
mov ecx, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov edx, dword [esi + 0x17c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x15
mov ecx, edi
call fcn.004a1dd0
jmp case.0x49cb16.3075
cmp dword [esi + 0x480], 0
je 0x49c159
mov eax, dword [ebp + 0x18]
xor ecx, ecx
cmp ebx, 2
sete cl
push eax
push edi
push ecx
mov ecx, esi
call fcn.0049ac20
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x49c175
push 9
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x484], 0
mov edx, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x16
mov ecx, edi
call fcn.004a1dd0
jmp case.0x49cb16.3075
add ebx, 0xfffffffe
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49c25c
lea ebx, [esi + 0x170]
mov ecx, dword [ebx - 4]
fld qword [ebx]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov eax, dword [ebx + 0x1c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov ecx, dword [ebx + 0x2c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x40]
mov edx, dword [ebx + 0x3c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x50]
mov eax, dword [ebx + 0x4c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0x478]
add eax, 6
sub ecx, 2
add ebx, 0x60
mov dword [esp + 0x18], eax
cmp eax, ecx
jl 0x49c1b7
mov eax, dword [esp + 0x18]
mov edx, eax
add edx, edx
mov ecx, dword [esi + edx*8 + 0x16c]
lea ebx, [esi + edx*8 + 0x16c]
push edi
add eax, 0x17
push ecx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx]
push edi
add eax, 0x18
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 5
jmp 0x49d0c8
add ebx, 0xfffffffa
mov dword [esp + 0x18], 0
test ebx, ebx
jle 0x49c30e
lea ebx, [esi + 0x16c]
mov ecx, dword [ebx]
fld qword [ebx + 4]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x14]
mov edx, dword [ebx]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 5
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0x478]
add eax, 2
sub ecx, 6
add ebx, 0x20
mov dword [esp + 0x18], eax
cmp eax, ecx
jl 0x49c2c2
mov eax, dword [esp + 0x18]
mov ebx, eax
shl ebx, 4
mov ecx, dword [ebx + esi + 0x16c]
add ebx, esi
push edi
add eax, 0x17
push ecx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x17c]
push edi
add eax, 0x18
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [ebx + 0x18c]
mov edx, dword [esp + 0x18]
push edi
add edx, 0x19
push ecx
add edx, edx
fld qword [esi + edx*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x19c]
push edi
add ecx, 0x1a
add ecx, ecx
fld qword [esi + ecx*8]
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x1ac]
push edi
add eax, 0x1b
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 0x1bc]
add edx, 0x1c
add edx, edx
fld qword [esi + edx*8]
jmp 0x49d0b7
and ebx, 0x80000001
jns 0x49c3df
dec ebx
or ebx, 0xfffffffe
inc ebx
cmp ebx, 1
jne 0x49c494
mov eax, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov ecx, dword [esi + 0x17c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov edx, dword [esi + 0x18c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov eax, dword [esi + 0x19c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1b0]
mov ecx, dword [esi + 0x1ac]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov dword [esp + 0x18], 5
jmp 0x49c49c
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x18]
cmp edx, dword [esi + 0x478]
jge 0x49d0cf
mov ebx, edx
add ebx, 0x17
shl ebx, 4
add ebx, esi
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx]
mov eax, dword [ebx - 4]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov ecx, dword [ebx + 0xc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov edx, dword [ebx + 0x1c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov eax, dword [ebx + 0x2c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49c4b6
jmp 0x49d0cf
and ebx, 0x80000001
jns 0x49c562
dec ebx
or ebx, 0xfffffffe
inc ebx
cmp ebx, 1
jne 0x49c617
mov ecx, dword [esi + 0x17c]
fld qword [esi + 0x180]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x170]
mov edx, dword [esi + 0x16c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov eax, dword [esi + 0x18c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov ecx, dword [esi + 0x19c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1b0]
mov edx, dword [esi + 0x1ac]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov dword [esp + 0x18], 5
jmp 0x49c61f
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, dword [esi + 0x478]
jge 0x49d0cf
mov ebx, eax
add ebx, 0x17
shl ebx, 4
add ebx, esi
lea esp, [esp]
mov ecx, dword [ebx - 4]
fld qword [ebx]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov eax, dword [ebx + 0x1c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov ecx, dword [ebx + 0x2c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49c640
jmp 0x49d0cf
cmp ebx, 1
jl case.0x49b9b2.11
lea edx, [ebx + 0x16]
add edx, edx
fld qword [esi + edx*8]
call fcn.00512de0
add eax, dword [esi + 0x15c]
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x3c]
push edx
push eax
lea eax, [esi + 0x58]
dec ebx
push eax
mov ecx, esi
mov dword [esi + 0x478], ebx
mov dword [esp + 0x30], 1
call fcn.0049a9d0
cmp dword [esp + 0x20], 0
je case.0x49b9b2.11
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x3c]
push 0
push ecx
mov ecx, dword [esp + 0x40]
push edx
push edi
push eax
push ecx
mov ecx, esi
call fcn.0049b8d0
jmp case.0x49b9b2.11
xor eax, eax
mov dword [esp + 0x18], eax
test ebx, ebx
jle 0x49c849
lea ebx, [esi + 0x170]
mov edx, dword [esi + 0x478]
sub edx, 5
cmp eax, edx
je 0x49c849
and eax, 0x80000007
jns 0x49c77d
dec eax
or eax, 0xfffffff8
inc eax
fld qword [ebx]
push edi
jne 0x49c7d6
mov eax, dword [ebx - 4]
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov ecx, dword [ebx + 0xc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov edx, dword [ebx + 0x1c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov eax, dword [ebx + 0x2c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x1e
jmp 0x49c828
mov ecx, dword [ebx - 4]
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov eax, dword [ebx + 0x1c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov ecx, dword [ebx + 0x2c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x1f
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49c760
mov edx, dword [esi + 0x478]
sub edx, 5
cmp eax, edx
jne 0x49d0cf
and eax, 0x80000007
jns 0x49c866
dec eax
or eax, 0xfffffff8
inc eax
push edi
jne 0x49ca4b
fldz
push 0
sub esp, 8
fstp qword [esp]
mov ecx, esi
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov ebx, eax
shl ebx, 4
mov edx, dword [ebx + esi + 0x16c]
add ebx, esi
push edi
add eax, 0x17
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x17c]
push edi
add ecx, 0x18
add ecx, ecx
fld qword [esi + ecx*8]
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x18c]
push edi
add eax, 0x19
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [ebx + 0x19c]
mov edx, dword [esp + 0x18]
push edi
add edx, 0x1a
push ecx
add edx, edx
fld qword [esi + edx*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x1ac]
add ecx, 0x1b
push edi
add ecx, ecx
fld qword [esi + ecx*8]
push eax
jmp 0x49d0b9
xor eax, eax
mov dword [esp + 0x18], eax
test ebx, ebx
jle 0x49ca27
lea ebx, [esi + 0x170]
jmp 0x49c940
mov ecx, dword [esi + 0x478]
sub ecx, 5
cmp eax, ecx
je 0x49ca27
and eax, 0x80000007
jns 0x49c95d
dec eax
or eax, 0xfffffff8
inc eax
fld qword [ebx]
push edi
mov ecx, esi
jne 0x49c9b6
mov edx, dword [ebx - 4]
push edx
sub esp, 8
fstp qword [esp]
call fcn.00499e10
mov eax, dword [ebx + 0xc]
fld qword [ebx + 0x10]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov ecx, dword [ebx + 0x1c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov edx, dword [ebx + 0x2c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x1f
jmp 0x49ca06
mov eax, dword [ebx - 4]
push eax
sub esp, 8
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [ebx + 0xc]
fld qword [ebx + 0x10]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x20]
mov edx, dword [ebx + 0x1c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [ebx + 0x30]
mov eax, dword [ebx + 0x2c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 0x1e
mov ecx, edi
call fcn.004a1dd0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
mov dword [esp + 0x18], eax
cmp eax, dword [esi + 0x478]
jl 0x49c940
mov ecx, dword [esi + 0x478]
sub ecx, 5
cmp eax, ecx
jne 0x49d0cf
and eax, 0x80000007
jns 0x49ca44
dec eax
or eax, 0xfffffff8
inc eax
push edi
jne 0x49c86d
mov eax, dword [esp + 0x1c]
mov ebx, eax
shl ebx, 4
mov ecx, dword [ebx + esi + 0x16c]
add ebx, esi
add eax, 0x17
push ecx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x17c]
push edi
add eax, 0x18
push edx
add eax, eax
fld qword [esi + eax*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [ebx + 0x18c]
mov edx, dword [esp + 0x18]
push edi
add edx, 0x19
push ecx
add edx, edx
fld qword [esi + edx*8]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x1ac]
push edi
add ecx, 0x1b
add ecx, ecx
fld qword [esi + ecx*8]
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x19c]
add eax, 0x1a
push edi
add eax, eax
fld qword [esi + eax*8]
push edx
jmp 0x49d0b9
sub eax, 0xc03
cmp eax, 0x22
ja case.0x49cb16.3075
movzx edx, byte [eax + 0x49d1d0]
jmp dword [edx*4 + 0x49d1b8]
mov eax, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov ecx, dword [esi + 0x17c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov edx, dword [esi + 0x18c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov eax, dword [esi + 0x19c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
fld qword [esi + 0x1b0]
mov ecx, dword [esi + 0x1ac]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1c0]
mov edx, dword [esi + 0x1bc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov eax, dword [esi + 0x18c]
fchs
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esi + 0x1cc]
fld qword [esi + 0x1d0]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
jmp 0x49d0b9
mov edx, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov eax, dword [esi + 0x17c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov ecx, dword [esi + 0x18c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov edx, dword [esi + 0x19c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1b0]
mov eax, dword [esi + 0x1ac]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1c0]
mov ecx, dword [esi + 0x1bc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
fld qword [esi + 0x1d0]
mov edx, dword [esi + 0x1cc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1e0]
mov eax, dword [esi + 0x1dc]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1f0]
mov ecx, dword [esi + 0x1ec]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x200]
mov edx, dword [esi + 0x1fc]
push edi
push edx
sub esp, 8
fstp qword [esp]
mov ecx, esi
call fcn.00499e10
fld qword [esi + 0x210]
mov eax, dword [esi + 0x20c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x220]
mov ecx, dword [esi + 0x21c]
jmp 0x49d0b7
mov edx, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov eax, dword [esi + 0x17c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov ecx, dword [esi + 0x18c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov edx, dword [esi + 0x19c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1b0]
mov eax, dword [esi + 0x1ac]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
fld qword [esi + 0x1c0]
mov ecx, dword [esi + 0x1bc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fldz
push edi
push 0
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1d0]
mov edx, dword [esi + 0x1cc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1e0]
mov eax, dword [esi + 0x1dc]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esi + 0x1ec]
fld qword [esi + 0x1f0]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
fadd qword [esi + 0x180]
mov edx, dword [esi + 0x19c]
or edx, dword [esi + 0x17c]
push edi
fadd qword [esi + 0x1e0]
or edx, dword [esi + 0x1dc]
push edx
fchs
jmp 0x49d0b9
mov eax, dword [esi + 0x16c]
fld qword [esi + 0x170]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x180]
mov ecx, dword [esi + 0x17c]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x190]
mov edx, dword [esi + 0x18c]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1a0]
mov eax, dword [esi + 0x19c]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1b0]
mov ecx, dword [esi + 0x1ac]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1c0]
mov edx, dword [esi + 0x1bc]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
fld qword [esi + 0x1d0]
mov eax, dword [esi + 0x1cc]
push edi
push eax
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1e0]
mov ecx, dword [esi + 0x1dc]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x1f0]
mov edx, dword [esi + 0x1ec]
push edi
push edx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esi + 0x200]
mov eax, dword [esi + 0x1fc]
push edi
push eax
sub esp, 8
fstp qword [esp]
mov ecx, esi
call fcn.00499e10
fld qword [esi + 0x190]
fadd qword [esi + 0x170]
push edi
fadd qword [esi + 0x1b0]
fadd qword [esi + 0x1d0]
fadd qword [esi + 0x1f0]
fld qword [esi + 0x1a0]
fadd qword [esi + 0x180]
fadd qword [esi + 0x1c0]
fadd qword [esi + 0x1e0]
fadd qword [esi + 0x200]
fst qword [esp + 0x34]
fld st(1)
fabs
fxch st(1)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x49d07d
mov ecx, dword [esi + 0x20c]
fstp st(0)
fld qword [esi + 0x210]
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
fld qword [esp + 0x30]
mov edx, dword [esi + 0x19c]
fchs
or edx, dword [esi + 0x17c]
push edi
or edx, dword [esi + 0x1fc]
or edx, dword [esi + 0x1dc]
or edx, dword [esi + 0x1bc]
push edx
jmp 0x49d0b9
mov eax, dword [esi + 0x1ec]
fchs
or eax, dword [esi + 0x1cc]
mov ecx, esi
or eax, dword [esi + 0x1ac]
or eax, dword [esi + 0x16c]
or eax, dword [esi + 0x18c]
push eax
sub esp, 8
fstp qword [esp]
call fcn.00499e10
mov ecx, dword [esi + 0x20c]
fld qword [esi + 0x210]
push edi
push ecx
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.00499e10
push 8
mov ecx, edi
call fcn.004a1dd0
mov dword [esi + 0x484], 1
mov dword [esi + 0x478], 0
mov edx, dword [esp + 0x28]
cmp dword [esp + 0x24], edx
jl 0x49b944
cmp dword [ebp + 0x1c], 0
je 0x49d132
mov ecx, dword [esp + 0x2c]
mov eax, 0x10ea
cmp ecx, dword [edi]
jge 0x49d132
mov esi, dword [edi + 4]
mov edx, eax
shr edx, 8
xor dl, byte [esi + ecx]
inc ecx
mov byte [esi + ecx - 1], dl
movzx edx, dl
add dx, ax
mov eax, 0x3193
imul dx, ax
mov eax, 0x58bf
sub ax, dx
movzx eax, ax
cmp ecx, dword [edi]
jl 0x49d104
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18