Function at 0x42b8b0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4
push ebx
push esi
mov esi, ecx
mov al, byte [esi + 0x4c]
test al, al
push edi
mov dword [ebp - 0x24], esi
jne 0x42cdc6
mov eax, dword [esi]
call dword [eax + 0x3c]
mov ecx, esi
call fcn.0040f720
test al, al
je 0x42b91c
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
mov eax, dword [esi + 0x44]
push ecx
mov ecx, dword [eax + 8]
push edx
call fcn.0042b640
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov al, byte [esi + 0x2e]
test al, al
jne 0x42cd93
mov al, byte [esi + 0x2d]
test al, al
je 0x42b939
mov al, byte [esi + 0x4e]
test al, al
je 0x42cd93
mov ecx, dword [esi + 0x44]
mov al, byte [ecx + 0x10]
test al, al
jne 0x42cd93
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
mov edi, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
lea ecx, [ebp - 0xa4]
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
push ecx
push edx
lea eax, [ebp + 0x10]
push eax
lea ecx, [ebp + 0xc]
push ecx
push edi
mov ecx, esi
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
call fcn.0041b120
test al, al
je 0x42cdc6
push 0
push 0x4ee5b4
push 0x4ee598
push 0
push edi
call fcn.004a9109
push 0
push 0x4ee57c
push 0x4ee598
push 0
push edi
mov ebx, eax
call fcn.004a9109
add esp, 0x28
test ebx, ebx
je 0x42cd1b
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x3c]
mov esi, dword [ebx + 0x24]
mov ecx, ebx
mov dword [ebp - 0x10], esi
call fcn.00464500
test esi, esi
jne 0x42c3a9
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [ebx]
add esi, edx
call dword [eax + 0x50]
lea ecx, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x58], ecx
fcos
fstp qword [ebp - 0x60]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x6c]
fld qword [ebp - 0x60]
fmul qword [0x4c5038]
call fcn.004a76bc
fld qword [ebp - 0x6c]
fmul qword [0x4c5038]
mov ebx, eax
mov dword [ebp - 4], ebx
call fcn.004a76bc
mov esi, dword [ebp - 0x24]
mov edx, dword [esi]
mov ecx, esi
mov dword [ebp + 0x18], eax
call dword [edx + 0x80]
test al, al
je 0x42cdc6
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x70]
mov edi, dword [eax + 0x64]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x60]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x68]
mov eax, dword [esi + 0xb0]
mov dword [ebp - 0x48], ecx
mov ecx, 0x18
sub ecx, edi
mov dword [ebp - 0x38], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [esi + 0xac]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0xa8]
cmp eax, 0x10
mov dword [ebp - 0x28], ecx
mov ecx, dword [esi + 0xb4]
mov dword [ebp - 0x18], edx
mov dword [ebp + 0x20], ecx
jne 0x42bf4a
fld qword [ebp - 0x9c]
call fcn.004a76bc
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004a76bc
mov ecx, eax
mov eax, dword [esi + 0x64]
imul eax, edi
cdq
sub eax, edx
mov edx, dword [esi + 0x78]
sar eax, 1
add eax, ecx
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x528478
push ecx
mov dword [ebp - 0x14], eax
call fcn.0040ec20
add esp, 8
test al, al
je 0x42cd10
fld qword [0x4c3440]
mov dword [ebp - 8], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x42cd10
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x60]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x6c]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4c3410]
call fcn.004a76bc
mov dword [ebp + 0xc], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0xc], edi
fild dword [ebp - 0xc]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x6c]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x4c5038]
call fcn.004a76bc
fmul qword [ebp - 0x60]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x4c5038]
call fcn.004a76bc
cmp ebx, 0xffffffff
mov esi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], esi
jge 0x42bc08
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x42bbf6
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, esi
jge 0x42bc55
mov esi, eax
jmp 0x42bc52
cmp ebx, 1
jl 0x42bc39
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x42bc1e
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, esi
jge 0x42bc55
mov esi, eax
jmp 0x42bc52
test edi, edi
jl 0x42bc4f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp edi, eax
jl 0x42bc55
or esi, 0xffffffff
mov dword [ebp + 0x2c], esi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x42bc8c
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x42bc79
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov esi, dword [ebp + 0x2c]
neg eax
cmp eax, esi
jge 0x42bcdd
mov esi, eax
jmp 0x42bcdd
cmp eax, 1
jl 0x42bcc3
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x42bca4
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov esi, dword [ebp + 0x2c]
cmp eax, esi
jge 0x42bcdd
mov esi, eax
jmp 0x42bcdd
test ecx, ecx
jl 0x42bcd9
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x42bcdd
mov esi, dword [ebp + 0x30]
dec esi
mov eax, dword [ebp + 0x30]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp - 0x14]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x74], edx
mov edx, dword [ebp + 0x30]
cmp edx, esi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
jg 0x42bf0f
sub esi, edx
inc esi
mov dword [ebp - 0x1c], esi
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x74]
mov word [ebp - 0x64], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x58]
mov ebx, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, dword [eax + 4]
mov dword [ebp + 0x2c], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
and ecx, 0xfffe
lea eax, [eax + edx*4]
mov edx, dword [eax]
and edi, 0xfffe
inc edi
inc ecx
mov dword [ebp + 0x30], edx
mov dword [ebp - 0x70], edi
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edx, 0x10000
sub edx, edi
imul edi, esi
mov dword [ebp + 0x28], edx
imul edx, esi
mov esi, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], ebx
shr esi, 0x18
shr ebx, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x70]
imul esi, dword [ebp + 0x28]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 0x10], ebx
movzx ebx, word [ebp - 0x64]
mov dword [ebp + 0x28], ebx
mov dword [ebp - 0x44], ecx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x54], esi
shr ebx, cl
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
shl ebx, cl
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0x44]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp - 0x40]
add edi, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x28]
shr edi, cl
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp + 0x20]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 0x44]
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp - 0x48]
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp + 0x18]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x3c]
and ecx, edx
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x1c]
add eax, ecx
mov ecx, dword [ebp - 0x34]
or ebx, eax
mov eax, dword [ebp - 0x30]
mov word [eax], bx
mov ebx, dword [ebp - 4]
add eax, 2
add edi, ebx
add ecx, esi
dec edx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x1c], edx
jne 0x42bd20
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x14]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
inc ecx
mov dword [ebp - 8], ecx
inc eax
fild dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x42bb95
jmp 0x42cd0c
cmp eax, 0x20
jne 0x42cd10
fld qword [ebp - 0x9c]
call fcn.004a76bc
fld qword [ebp - 0xa4]
mov esi, eax
call fcn.004a76bc
mov ecx, dword [ebp - 0x24]
mov edi, eax
mov eax, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x78]
imul eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, edi
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x528478
push eax
mov dword [ebp - 0xc], edx
call fcn.0040ec20
add esp, 8
test al, al
je 0x42cd10
fld qword [0x4c3440]
mov dword [ebp - 0x14], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x42cd10
sub edi, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], edi
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x60]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x6c]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4c3410]
call fcn.004a76bc
mov dword [ebp + 0xc], eax
sub esi, dword [ebp + 0x30]
mov dword [ebp - 0x10], esi
mov edi, edi
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x6c]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x4c5038]
call fcn.004a76bc
fmul qword [ebp - 0x60]
mov esi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4c5038]
call fcn.004a76bc
cmp ebx, 0xffffffff
mov edi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], edi
jge 0x42c073
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x42c061
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, esi
cdq
idiv ebx
cmp eax, edi
jge 0x42c0c0
mov edi, eax
jmp 0x42c0bd
cmp ebx, 1
jl 0x42c0a4
mov eax, 0x10000
sub eax, esi
cdq
idiv ebx
test eax, eax
jle 0x42c089
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, edi
jge 0x42c0c0
mov edi, eax
jmp 0x42c0bd
test esi, esi
jl 0x42c0ba
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp esi, eax
jl 0x42c0c0
or edi, 0xffffffff
mov dword [ebp + 0x2c], edi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x42c0f7
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x42c0e4
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov edi, dword [ebp + 0x2c]
neg eax
cmp eax, edi
jge 0x42c148
mov edi, eax
jmp 0x42c148
cmp eax, 1
jl 0x42c12e
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x42c10f
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edi, dword [ebp + 0x2c]
cmp eax, edi
jge 0x42c148
mov edi, eax
jmp 0x42c148
test ecx, ecx
jl 0x42c144
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x42c148
mov edi, dword [ebp + 0x30]
dec edi
mov eax, dword [ebp + 0x30]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add esi, edx
mov edx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp - 0xc]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp edx, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], eax
jg 0x42c36a
sub edi, edx
inc edi
mov dword [ebp - 0x44], edi
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
mov dword [ebp + 0x28], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x58]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax + 4]
mov dword [ebp + 0x2c], esi
mov esi, dword [ebp + 8]
mov esi, dword [esi + 4]
and ecx, 0xffff
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [ebp + 0x30], esi
and edx, 0xffff
mov dword [ebp - 0x1c], edx
mov ebx, 0xffff
sub ebx, edx
mov edx, ebx
mov esi, 0xffff
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x1c], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0x1c]
imul edi, esi
mov esi, dword [ebp + 0x2c]
mov eax, dword [eax + 4]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x1c]
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x1c], ecx
mov ebx, eax
and ebx, 0xff
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x28]
shr ebx, cl
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x64], esi
shl ebx, cl
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, esi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x34]
add edi, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x18]
shr edi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0x1c]
shl edi, cl
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x64]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x34]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp - 0x38]
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp + 0x18]
and ecx, edx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x44]
add eax, ecx
mov ecx, dword [ebp - 0x40]
or ebx, eax
mov eax, dword [ebp - 0x3c]
mov dword [eax], ebx
mov ebx, dword [ebp - 4]
add eax, 4
add esi, ebx
add ecx, edi
dec edx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], edx
jne 0x42c184
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0xc]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x14], ecx
inc eax
fild dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x42c000
jmp 0x42cd0c
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
mov edi, dword [ebx + 0x28]
mov edx, dword [ecx]
add eax, edi
add eax, edx
mov dword [ebp - 0x58], eax
fstp qword [ebp - 0x6c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x60]
fld qword [ebp - 0x6c]
fmul qword [0x4c5038]
call fcn.004a76bc
fld qword [ebp - 0x60]
fmul qword [0x4c5038]
mov ebx, eax
mov dword [ebp + 0x20], ebx
call fcn.004a76bc
mov edi, dword [ebp - 0x24]
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp + 0x18], eax
call dword [edx + 0x80]
test al, al
je 0x42cdc6
mov eax, dword [edi + 0x44]
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x70]
mov dword [ebp - 0x70], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x34], edx
mov edx, dword [eax + 0x60]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x64]
mov dword [ebp - 0x44], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x68]
mov eax, dword [edi + 0xb0]
mov dword [ebp - 0x1c], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xac]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0xa8]
cmp eax, 0x10
mov dword [ebp - 0x30], ecx
mov ecx, dword [edi + 0xb4]
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x14], ecx
jne 0x42c8e9
fld qword [ebp - 0x9c]
call fcn.004a76bc
fld qword [ebp - 0xa4]
mov dword [ebp - 4], eax
call fcn.004a76bc
mov ecx, eax
mov eax, dword [edi + 0x64]
imul eax, dword [ebp - 4]
cdq
sub eax, edx
mov edx, dword [edi + 0x78]
sar eax, 1
add eax, ecx
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x528478
push ecx
mov dword [ebp - 0x18], eax
call fcn.0040ec20
add esp, 8
test al, al
je 0x42cd10
fld qword [0x4c3440]
mov dword [ebp - 0xc], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x42cd10
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x6c]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x60]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4c3410]
call fcn.004a76bc
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
sub eax, ecx
mov dword [ebp - 8], eax
mov edi, edi
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x60]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x4c5038]
call fcn.004a76bc
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4c5038]
call fcn.004a76bc
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x42c595
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x42c581
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x42c5db
mov dword [ebp + 0x30], eax
jmp 0x42c5db
cmp ebx, 1
jl 0x42c5bd
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x42c5ab
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x42c588
test edi, edi
jl 0x42c5d4
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x42c5db
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x42c890
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ebx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x42c605
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x42c614
mov dword [ebp + 0x30], eax
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x2c]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x2c]
add ecx, eax
mov eax, dword [ebp - 0x18]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], eax
jg 0x42c855
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
mov ax, word [eax]
mov ebx, dword [ebp - 0x58]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
add ebx, edx
mov edx, edi
mov word [ebp - 0x64], ax
mov eax, edi
sar eax, 0x10
movzx edi, byte [eax + ebx]
add eax, ebx
mov ebx, dword [esi + edi*4]
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x2c], edi
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xfffe
and edx, 0xfffe
inc edx
inc ecx
mov dword [ebp + 0x30], edi
mov dword [ebp - 4], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 4]
imul edx, esi
imul esi, dword [ebp - 4]
mov dword [ebp + 0x28], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
shr edi, 0x10
mov dword [ebp + 0x1c], esi
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 0x64]
mov dword [ebp - 0x20], esi
mov dword [ebp - 4], ecx
mov esi, eax
and esi, 0xff00
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x1c]
shr edx, 0x10
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
and ecx, 0xff00
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x1c]
shr esi, cl
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x2c]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp + 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x30]
shr edi, cl
mov ecx, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x14]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
and ecx, ebx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x2c]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x1c]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x74]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x48]
and ecx, edx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x4c]
or esi, eax
mov eax, dword [ebp - 0x50]
mov word [eax], si
mov esi, dword [ebp + 0x18]
add eax, 2
add edi, ebx
add ecx, esi
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
dec edx
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0x28], edx
jne 0x42c655
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x18]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
inc eax
fild dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x42c520
jmp 0x42cd0c
cmp eax, 1
jl 0x42c8c2
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x42c8aa
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
jmp 0x42c60c
test ecx, ecx
jl 0x42c8dd
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x42c617
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x42c617
cmp eax, 0x20
jne 0x42cd10
fld qword [ebp - 0x9c]
call fcn.004a76bc
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004a76bc
mov ecx, dword [ebp - 0x24]
mov dword [ebp + 0x28], eax
mov eax, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x78]
imul eax, edi
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x28]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x528478
push eax
mov dword [ebp - 0x18], edx
call fcn.0040ec20
add esp, 8
test al, al
je 0x42cd10
fld qword [0x4c3440]
mov dword [ebp - 0xc], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x42cd10
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x6c]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x60]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4c3410]
call fcn.004a76bc
mov dword [ebp + 0xc], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 8], edi
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x60]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x4c5038]
call fcn.004a76bc
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4c5038]
call fcn.004a76bc
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x42ca1b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x42ca07
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x42ca61
mov dword [ebp + 0x30], eax
jmp 0x42ca61
cmp ebx, 1
jl 0x42ca43
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x42ca31
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x42ca0e
test edi, edi
jl 0x42ca5a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x42ca61
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x42cd3a
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ebx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x42ca8b
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x42ca9a
mov dword [ebp + 0x30], eax
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x2c]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x2c]
add ecx, eax
mov eax, dword [ebp - 0x18]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], eax
jg 0x42ccd2
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
jmp 0x42cae0
mov eax, dword [eax]
mov ebx, dword [ebp - 0x58]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
add ebx, edx
mov edx, edi
mov dword [ebp - 0x20], eax
mov eax, edi
sar eax, 0x10
movzx edi, byte [eax + ebx]
add eax, ebx
mov ebx, dword [esi + edi*4]
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x2c], edi
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xffff
mov dword [ebp + 0x30], edi
and edx, 0xffff
mov dword [ebp - 4], edx
mov edi, 0xffff
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0xffff
sub esi, ecx
imul ecx, dword [ebp - 4]
imul edx, esi
imul esi, dword [ebp - 4]
mov dword [ebp + 0x28], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
shr edi, 0x10
mov dword [ebp + 0x1c], esi
mov ebx, 0x100
sub ebx, ecx
mov dword [ebp - 4], ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
and esi, 0xff00
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x1c]
add esi, ecx
mov ecx, dword [ebp + 0x28]
shr edx, 0x10
and ecx, 0xff00
imul ecx, edx
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
shr esi, cl
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x2c]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp + 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x30]
shr edi, cl
mov ecx, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x14]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
and ecx, ebx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x2c]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x1c]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x74]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x48]
and ecx, edx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x4c]
or esi, eax
mov eax, dword [ebp - 0x50]
mov dword [eax], esi
add ecx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
add eax, 4
add edi, ebx
dec edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x28], edx
jne 0x42cae0
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x18]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
inc eax
fild dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x42c9a6
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
call dword [eax + 0x84]
mov esi, dword [ebp - 0x24]
mov ecx, dword [esi + 0x14]
push ecx
call fcn.004a8a9f
add esp, 4
pop edi
mov dword [esi + 0x14], 0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x42cd6c
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x42cd54
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
jmp 0x42ca92
test ecx, ecx
jl 0x42cd87
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x42ca9d
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x42ca9d
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, esi
call fcn.0041b3e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c