Function at 0x472350
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 - 0x20], esi
jne 0x47385c
mov eax, dword [esi]
call dword [eax + 0x3c]
mov ecx, esi
call fcn.00457e50
test al, al
je 0x4723bc
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.004720e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov al, byte [esi + 0x2e]
test al, al
jne 0x473829
mov al, byte [esi + 0x2d]
test al, al
je 0x4723d9
mov al, byte [esi + 0x4e]
test al, al
je 0x473829
mov ecx, dword [esi + 0x44]
mov al, byte [ecx + 0x10]
test al, al
jne 0x473829
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.00463b90
test al, al
je 0x47385c
push 0
push 0x52c31c
push 0x52c300
push 0
push edi
call fcn.004db5d9
push 0
push 0x52c2e4
push 0x52c300
push 0
push edi
mov ebx, eax
call fcn.004db5d9
add esp, 0x28
test ebx, ebx
je 0x4737b1
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x3c]
mov esi, dword [ebx + 0x24]
test esi, esi
mov dword [ebp - 0x18], esi
jne 0x472e3c
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x50]
fld qword [ebp + 0x24]
fcos
mov ecx, dword [ebp + 0x14]
mov edx, dword [ecx + 4]
mov esi, dword [ecx]
fstp qword [ebp - 0x60]
imul edx, dword [ecx + 8]
fld qword [ebp + 0x24]
fsin
add edx, esi
lea eax, [eax + edx*4]
mov dword [ebp - 0x54], eax
fstp qword [ebp - 0x6c]
fld qword [ebp - 0x60]
fmul qword [0x502180]
call fcn.004d8d68
fld qword [ebp - 0x6c]
fmul qword [0x502180]
mov ebx, eax
mov dword [ebp - 4], ebx
call fcn.004d8d68
mov esi, dword [ebp - 0x20]
mov edx, dword [esi]
mov ecx, esi
mov dword [ebp + 0x18], eax
call dword [edx + 0x80]
test al, al
je 0x47385c
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x70]
mov edi, dword [eax + 0x64]
mov dword [ebp - 0x4c], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x38], 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 - 0x44], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [esi + 0xac]
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0xa8]
cmp eax, 0x10
mov dword [ebp - 0x64], ecx
mov ecx, dword [esi + 0xb4]
mov dword [ebp - 0x24], edx
mov dword [ebp + 0x20], ecx
jne 0x4729df
fld qword [ebp - 0x9c]
call fcn.004d8d68
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004d8d68
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 0x567368
push ecx
mov dword [ebp - 0x10], eax
call fcn.00457350
add esp, 8
test al, al
je 0x4737a6
fld qword [0x4fc240]
mov dword [ebp - 0xc], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x4737a6
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 [0x4fc220]
call fcn.004d8d68
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 - 0x6c]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x502180]
call fcn.004d8d68
fmul qword [ebp - 0x60]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x502180]
call fcn.004d8d68
cmp ebx, 0xffffffff
mov esi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], esi
jge 0x4726a4
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 0x472692
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, esi
jge 0x4726f1
mov esi, eax
jmp 0x4726ee
cmp ebx, 1
jl 0x4726d5
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x4726ba
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 0x4726f1
mov esi, eax
jmp 0x4726ee
test edi, edi
jl 0x4726eb
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp edi, eax
jl 0x4726f1
or esi, 0xffffffff
mov dword [ebp + 0x2c], esi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x472728
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 0x472715
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov esi, dword [ebp + 0x2c]
neg eax
cmp eax, esi
jge 0x472779
mov esi, eax
jmp 0x472779
cmp eax, 1
jl 0x47275f
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x472740
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 0x472779
mov esi, eax
jmp 0x472779
test ecx, ecx
jl 0x472775
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x472779
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 - 0x10]
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 - 0x30], edi
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], eax
jg 0x4729a4
sub esi, edx
inc esi
mov dword [ebp - 0x1c], esi
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x74]
mov word [ebp - 0x58], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x54]
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, pe_nt_image_headers32
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 0x18], ebx
movzx ebx, word [ebp - 0x58]
mov dword [ebp + 0x28], ebx
mov dword [ebp - 0x14], 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 - 0x64]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x50], esi
shr ebx, cl
mov ecx, dword [ebp - 0x28]
mov edi, dword [ebp + 0x20]
shl ebx, cl
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 0x18]
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 - 0x14]
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]
shr edi, cl
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x24]
and eax, 0xff00
shl edi, cl
imul eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 0x18]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x50]
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 - 0x2c]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x38]
mov esi, dword [ebp + 0x18]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x30]
and ecx, edx
imul ecx, dword [ebp - 0x18]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x1c]
add eax, ecx
mov ecx, dword [ebp - 0x3c]
or ebx, eax
mov eax, dword [ebp - 0x40]
mov word [eax], bx
mov ebx, dword [ebp - 4]
add eax, 2
add edi, ebx
add ecx, esi
dec edx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x1c], edx
jne 0x4727b5
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x10]
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 - 0x10], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x472631
jmp 0x4737a2
cmp eax, 0x20
jne 0x4737a6
fld qword [ebp - 0x9c]
call fcn.004d8d68
fld qword [ebp - 0xa4]
mov esi, eax
call fcn.004d8d68
mov ecx, dword [ebp - 0x20]
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 0x567368
push eax
mov dword [ebp - 8], edx
call fcn.00457350
add esp, 8
test al, al
je 0x4737a6
fld qword [0x4fc240]
mov dword [ebp - 0x18], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x4737a6
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 [0x4fc220]
call fcn.004d8d68
mov dword [ebp + 0xc], eax
sub esi, dword [ebp + 0x30]
mov dword [ebp - 0x10], esi
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 [0x502180]
call fcn.004d8d68
fmul qword [ebp - 0x60]
mov esi, eax
fadd st(2)
fadd st(1)
fmul qword [0x502180]
call fcn.004d8d68
cmp ebx, 0xffffffff
mov edi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], edi
jge 0x472b06
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 0x472af4
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, esi
cdq
idiv ebx
cmp eax, edi
jge 0x472b53
mov edi, eax
jmp 0x472b50
cmp ebx, 1
jl 0x472b37
mov eax, 0x10000
sub eax, esi
cdq
idiv ebx
test eax, eax
jle 0x472b1c
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 0x472b53
mov edi, eax
jmp 0x472b50
test esi, esi
jl 0x472b4d
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp esi, eax
jl 0x472b53
or edi, 0xffffffff
mov dword [ebp + 0x2c], edi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x472b8a
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 0x472b77
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov edi, dword [ebp + 0x2c]
neg eax
cmp eax, edi
jge 0x472bdb
mov edi, eax
jmp 0x472bdb
cmp eax, 1
jl 0x472bc1
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x472ba2
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 0x472bdb
mov edi, eax
jmp 0x472bdb
test ecx, ecx
jl 0x472bd7
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x472bdb
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 - 8]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp + 0x30]
cmp edx, edi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
jg 0x472dfd
sub edi, edx
inc edi
mov dword [ebp - 0x14], edi
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x50]
mov dword [ebp + 0x28], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x54]
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, pe_nt_image_headers32
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 0xc], 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 - 0x64]
shr ebx, cl
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x58], esi
shl ebx, cl
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 0xc]
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 - 0x3c]
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 - 0x24]
shr edi, cl
mov ecx, dword [ebp - 0x4c]
and eax, 0xff00
imul eax, dword [ebp - 0x1c]
shl edi, cl
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 0xc]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x58]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x3c]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x2c]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x40]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp + 0x18]
and ecx, edx
imul ecx, dword [ebp - 0xc]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x14]
add eax, ecx
mov ecx, dword [ebp - 0x34]
or ebx, eax
mov eax, dword [ebp - 0x30]
mov dword [eax], ebx
mov ebx, dword [ebp - 4]
add eax, 4
add esi, ebx
add ecx, edi
dec edx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x14], edx
jne 0x472c17
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 8]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x18], ecx
inc eax
fild dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x472a93
jmp 0x4737a2
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
mov eax, dword [ecx + 4]
mov edi, dword [ebx + 0x28]
mov edx, dword [ecx]
fstp qword [ebp - 0x6c]
imul eax, dword [ecx + 8]
fld qword [ebp + 0x24]
fsin
add eax, edi
add eax, edx
mov dword [ebp - 0x64], eax
fstp qword [ebp - 0x60]
fld qword [ebp - 0x6c]
fmul qword [0x502180]
call fcn.004d8d68
fld qword [ebp - 0x60]
fmul qword [0x502180]
mov ebx, eax
mov dword [ebp + 0x20], ebx
call fcn.004d8d68
mov edi, dword [ebp - 0x20]
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp + 0x18], eax
call dword [edx + 0x80]
test al, al
je 0x47385c
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 - 0x1c], edx
mov edx, dword [eax + 0x60]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x64]
mov dword [ebp - 0x34], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x68]
mov eax, dword [edi + 0xb0]
mov dword [ebp - 0x54], 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 - 0x24], ecx
jne 0x473384
fld qword [ebp - 0x9c]
call fcn.004d8d68
fld qword [ebp - 0xa4]
mov dword [ebp - 4], eax
call fcn.004d8d68
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 0x567368
push ecx
mov dword [ebp - 8], eax
call fcn.00457350
add esp, 8
test al, al
je 0x4737a6
fld qword [0x4fc240]
mov dword [ebp - 0x14], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x4737a6
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 [0x4fc220]
call fcn.004d8d68
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
sub eax, ecx
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x60]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x502180]
call fcn.004d8d68
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x502180]
call fcn.004d8d68
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x473029
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 0x473015
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x47306f
mov dword [ebp + 0x30], eax
jmp 0x47306f
cmp ebx, 1
jl 0x473051
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x47303f
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 0x47301c
test edi, edi
jl 0x473068
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x47306f
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x47332b
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 0x473099
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4730a8
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 - 8]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], eax
jg 0x4732f0
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
lea esp, [esp]
mov ax, word [eax]
mov ebx, dword [ebp - 0x64]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x50]
add ebx, edx
mov edx, edi
mov word [ebp - 0x58], 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, pe_nt_image_headers32
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 0x58]
mov dword [ebp - 0xc], 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 - 0x54]
shr esi, cl
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0xc]
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 - 0x24]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
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 - 0x34]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x4c]
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 - 0x48]
or esi, eax
mov eax, dword [ebp - 0x44]
mov word [eax], si
mov esi, dword [ebp + 0x18]
add eax, 2
add edi, ebx
add ecx, esi
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], ecx
dec edx
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x28], edx
jne 0x4730f0
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 8]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
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 - 8], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x472fb4
jmp 0x4737a2
cmp eax, 1
jl 0x47335d
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x473345
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 0x4730a0
test ecx, ecx
jl 0x473378
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x4730ab
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x4730ab
cmp eax, 0x20
jne 0x4737a6
fld qword [ebp - 0x9c]
call fcn.004d8d68
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004d8d68
mov ecx, dword [ebp - 0x20]
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 0x567368
push eax
mov dword [ebp - 0xc], edx
call fcn.00457350
add esp, 8
test al, al
je 0x4737a6
fld qword [0x4fc240]
mov dword [ebp - 0x10], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x4737a6
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 [0x4fc220]
call fcn.004d8d68
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 [0x502180]
call fcn.004d8d68
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x502180]
call fcn.004d8d68
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x4734b6
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 0x4734a2
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x4734fc
mov dword [ebp + 0x30], eax
jmp 0x4734fc
cmp ebx, 1
jl 0x4734de
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x4734cc
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 0x4734a9
test edi, edi
jl 0x4734f5
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4734fc
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x4737d0
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 0x473526
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x473535
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 - 0xc]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], eax
jg 0x473768
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
mov eax, dword [eax]
mov ebx, dword [ebp - 0x64]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x50]
add ebx, edx
mov edx, edi
mov dword [ebp - 0x14], 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, pe_nt_image_headers32
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 - 0x54]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
shr esi, cl
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x14]
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 - 0x24]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
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 - 0x34]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x4c]
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 - 0x48]
or esi, eax
mov eax, dword [ebp - 0x44]
mov dword [eax], esi
add ecx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x18]
add eax, 4
add edi, ebx
dec edx
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x28], edx
jne 0x473576
mov edx, dword [ebp - 0x20]
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 - 0x10]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0x10], ecx
inc eax
fild dword [ebp - 0x10]
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x473441
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
call dword [eax + 0x84]
mov esi, dword [ebp - 0x20]
mov ecx, dword [esi + 0x14]
push ecx
call fcn.004d9c4d
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 0x473802
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x4737ea
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 0x47352d
test ecx, ecx
jl 0x47381d
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x473538
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x473538
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.00463e50
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c