Function at 0x100da2e8
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
jmp 0x10152460
mov edx, dword [esp + 0x14]
sub esp, 0x80
cmp dword [edx + 0x4d4], 3
jne 0x101535fc
cmp dword [edx + 0x4e0], 8
jne 0x101535fc
cmp dword [esp + 0x98], 0
push edi
je 0x101535ef
mov edi, dword [esp + 0xa0]
test edi, edi
je 0x101535ef
mov eax, dword [edx + 0x4ec]
push ebx
mov ebx, dword [edx + 0x4e8]
mov ecx, eax
mov edx, ebx
imul edx, eax
push esi
mov esi, eax
mov dword [esp + 0x60], eax
shr ecx, 1
mov eax, ebx
imul eax, ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], edx
mov dword [esp + 0x7c], eax
test ebx, ebx
je 0x101535e0
test esi, esi
je 0x101535e0
mov ax, word [esp + 0x98]
push ebp
mov dword [esp + 0x34], 0
test ax, ax
jbe 0x10152577
movzx eax, ax
cmp eax, esi
jge 0x10152577
mov cx, word [esp + 0xa0]
test cx, cx
jbe 0x10152577
movzx ebp, cx
cmp ebp, ebx
jge 0x10152577
fild dword [esp + 0x88]
mov esi, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x4c], ebp
fidiv dword [esp + 0x14]
mov dword [esp + 0x34], 1
fst qword [esp + 0x78]
fild dword [esp + 0x84]
fidiv dword [esp + 0x4c]
fst qword [esp + 0x70]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x10152569
fstp st(0)
call fcn.100dcc82
inc eax
mov dword [esp + 0x18], eax
jmp 0x101525e0
fstp st(1)
call fcn.100dcc82
inc eax
mov dword [esp + 0x18], eax
jmp 0x101525e0
mov ecx, dword [esp + 0x98]
test ecx, ecx
jbe 0x101525b2
mov eax, esi
imul eax, ebx
xor edx, edx
div ecx
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
test eax, eax
jge 0x1015259d
fadd qword [0x102cf268]
call fcn.100dcf8e
call fcn.100dcc82
mov ecx, eax
cmp ecx, 1
mov dword [esp + 0x18], ecx
jge 0x101525bd
mov ecx, 1
mov dword [esp + 0x18], ecx
jmp 0x101525bf
jne 0x101525ca
mov dword [esp + 0xcc], 0
mov eax, esi
cdq
idiv ecx
mov esi, eax
mov dword [esp + 0x14], eax
mov eax, ebx
cdq
idiv ecx
mov ebp, eax
mov dword [esp + 0x4c], eax
cmp dword [esp + 0xd0], 0
je 0x101525f3
lea eax, [esi + esi*2 + 3]
and eax, 0xfffffffc
jmp 0x101525f6
lea eax, [esi + esi*2]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc0]
cmp dword [eax], 0
jne 0x1015261b
push eax
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x10152ebf
lea ecx, [esp + 0x10]
push ecx
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x10152ebf
cmp dword [esp + 0xcc], 0
je 0x101526a9
mov edx, dword [esp + 0x10]
lea ebx, [esi + esi]
push ebx
push edx
call fcn.100de77b
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
push ebx
push eax
call fcn.100de77b
mov ecx, dword [esp + 0x20]
push ebx
push ecx
mov dword [esp + 0x54], eax
call fcn.100de77b
mov edx, dword [esp + 0x28]
push ebx
push edx
mov dword [esp + 0x60], eax
call fcn.100de77b
add esp, 0x20
mov dword [esp + 0x44], eax
test eax, eax
je 0x10152efb
cmp dword [esp + 0x38], 0
je 0x10152efb
cmp dword [esp + 0x3c], 0
je 0x10152efb
cmp dword [esp + 0x40], 0
je 0x10152efb
cmp dword [esp + 0x34], 0
je 0x10152767
mov edx, dword [esp + 0x10]
lea ecx, [esi*4 + 4]
push ecx
push edx
call fcn.100de77b
mov ecx, dword [esp + 0x18]
mov ebx, eax
lea eax, [ebp*4 + 4]
push eax
push ecx
mov dword [esp + 0x58], ebx
call fcn.100de77b
add esp, 0x10
mov dword [esp + 0x68], eax
test ebx, ebx
je 0x10152890
test eax, eax
je 0x10152890
xor ebx, ebx
mov dword [esp + 0x20], ebx
test esi, esi
jle 0x10152720
fld qword [esp + 0x78]
fild dword [esp + 0x20]
fmul st(1)
call fcn.100dcc82
mov edx, dword [esp + 0x48]
mov dword [edx + ebx*4], eax
inc ebx
cmp ebx, esi
mov dword [esp + 0x20], ebx
jl 0x10152703
fstp st(0)
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x48]
xor ebx, ebx
mov dword [ecx + esi*4], eax
mov dword [esp + 0x20], ebx
test ebp, ebp
jle 0x10152759
fld qword [esp + 0x70]
fild dword [esp + 0x20]
fmul st(1)
call fcn.100dcc82
mov edx, dword [esp + 0x68]
mov dword [edx + ebx*4], eax
inc ebx
cmp ebx, ebp
mov dword [esp + 0x20], ebx
jl 0x1015273c
fstp st(0)
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x68]
mov dword [ecx + ebp*4], eax
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0xc0]
imul ebx, ebp
mov edx, dword [ecx]
lea eax, [ebx + 0x4ac]
push eax
push edx
call fcn.100de77b
mov ecx, dword [esp + 0xb0]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x10152890
lea eax, [eax + ebx + 0x80]
xor ecx, ecx
mov dword [edi], eax
cmp eax, ecx
je 0x10152efb
mov dword [eax], 0x28
mov edx, dword [edi]
mov dword [edx + 4], esi
mov eax, dword [edi]
mov dword [eax + 8], ebp
mov edx, dword [edi]
mov eax, 1
mov word [edx + 0xc], ax
mov edx, dword [edi]
mov eax, 0x18
mov word [edx + 0xe], ax
mov edx, dword [edi]
mov dword [edx + 0x10], ecx
mov eax, dword [edi]
mov dword [eax + 0x14], ebx
mov edx, dword [edi]
mov dword [edx + 0x18], ecx
mov eax, dword [edi]
mov dword [eax + 0x1c], ecx
mov edx, dword [edi]
mov dword [edx + 0x24], ecx
mov eax, dword [edi]
mov dword [eax + 0x20], ecx
xor eax, eax
mov edx, dword [edi]
mov byte [edx + eax*4 + 0x2a], al
mov edx, dword [edi]
mov byte [edx + eax*4 + 0x29], al
mov edx, dword [edi]
mov byte [edx + eax*4 + 0x28], al
mov edx, dword [edi]
mov byte [edx + eax*4 + 0x2b], cl
inc eax
cmp eax, 0x100
jl 0x101527f1
cmp dword [esp + 0xc4], ecx
je 0x10152838
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0xa8]
lea ebx, [ebp - 1]
imul ebx, eax
add ebx, dword [edx]
neg eax
mov dword [esp + 0x88], eax
jmp 0x1015284c
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x30]
mov ebx, dword [eax]
mov dword [esp + 0x88], edx
mov eax, dword [esp + 0xa4]
cmp dword [eax + 0x4d8], ecx
je 0x10152ed1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov esi, eax
imul eax, dword [esp + 0x6c]
imul esi, dword [esp + 0x64]
push esi
push ecx
mov dword [esp + 0x58], esi
mov dword [esp + 0x80], eax
call fcn.100de77b
add esp, 8
mov dword [esp + 0x28], eax
test eax, eax
jne 0x101528ad
mov edx, dword [esp + 0x10]
push edx
call fcn.100db8dc
add esp, 4
pop ebp
pop esi
pop ebx
mov eax, 0x66
pop edi
add esp, 0x80
ret
mov eax, dword [esp + 0x10]
push esi
push eax
call fcn.100de77b
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
jne 0x101528e0
mov ecx, dword [esp + 0x10]
push ecx
call fcn.100db8dc
add esp, 4
pop ebp
pop esi
pop ebx
mov eax, 0x66
pop edi
add esp, 0x80
ret
mov edx, dword [esp + 0x10]
push esi
push edx
call fcn.100de77b
add esp, 8
mov dword [esp + 0x54], eax
test eax, eax
je 0x10152efb
mov esi, dword [esp + 0x94]
push 1
push 0
push esi
call fcn.100db66b
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x8c]
add ecx, eax
mov dword [esp + 0x68], ecx
add ecx, edx
mov dword [esp + 0x6c], ecx
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x70], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x20], ecx
test ebp, ebp
jg 0x1015299f
mov edx, dword [esp + 0x10]
push edx
call fcn.100db8dc
add esp, 4
cmp dword [esp + 0xb8], 0
je 0x101535d3
mov esi, dword [esp + 0xbc]
test esi, esi
je 0x101535d3
mov ax, word [esp + 0xb0]
test ax, ax
jne 0x101533c2
pop ebp
pop esi
pop ebx
mov eax, 1
pop edi
add esp, 0x80
ret
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x94]
cmp dword [esp + 0xcc], 0
je 0x10152cd0
cmp dword [esp + 0x34], 0
je 0x101529c5
mov edx, dword [esp + 0x68]
mov ebx, dword [edx + ecx*4 + 4]
sub ebx, dword [edx + ecx*4]
mov dword [esp + 0x18], ebx
jmp 0x101529c9
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x6c]
mov ecx, ebx
imul ecx, ebp
mov dword [esp + 0x50], ecx
mov ecx, ebx
imul ecx, edi
push 0
push eax
push esi
mov dword [esp + 0x84], ecx
call fcn.100db66b
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, ebp
jne 0x10152ead
mov edx, dword [esp + 0x5c]
push 0
push edx
push esi
call fcn.100db66b
mov ebp, dword [esp + 0x84]
mov eax, dword [esp + 0x64]
push ebp
push eax
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x101533b8
mov ecx, dword [esp + 0x60]
push 0
push ecx
push esi
call fcn.100db66b
mov edx, dword [esp + 0x60]
push ebp
push edx
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10152eca
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add edi, edi
push edi
push 0
push eax
call fcn.100dc309
mov ecx, dword [esp + 0x48]
push edi
push 0
push ecx
call fcn.100dc309
mov edx, dword [esp + 0x58]
push edi
push 0
push edx
call fcn.100dc309
mov eax, dword [esp + 0x68]
push edi
push 0
push eax
call fcn.100dc309
add esp, 0x30
test ebx, ebx
jle 0x10152b7b
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x80], ecx
lea esp, [esp]
xor ecx, ecx
xor edx, edx
cmp dword [esp + 0x14], edx
mov dword [esp + 0x24], ecx
jle 0x10152b6d
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
sub esi, eax
sub edi, eax
sub ebp, eax
mov dword [esp + 0x8c], ebp
nop
cmp dword [esp + 0x34], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x84], ebx
je 0x10152b07
mov ebp, dword [esp + 0x48]
mov ebx, dword [ebp + ecx*4 + 4]
sub ebx, dword [ebp + ecx*4]
mov ebp, dword [esp + 0x8c]
jmp 0x10152b0e
mov ebx, dword [esp + 0x84]
test ebx, ebx
jle 0x10152b5b
mov dword [esp + 0x84], ebx
lea esp, [esp]
mov ebx, dword [esp + 0x28]
movzx ebx, byte [edx + ebx]
add word [esi + eax], bx
mov ebx, dword [esp + 0x58]
mov ecx, edx
sar ecx, 1
movzx ebx, byte [ecx + ebx]
add word [eax], bx
mov ebx, dword [esp + 0x54]
movzx cx, byte [ecx + ebx]
add word [edi + eax], cx
inc word [eax + ebp]
inc edx
sub dword [esp + 0x84], 1
jne 0x10152b20
mov ecx, dword [esp + 0x24]
inc ecx
add eax, 2
cmp ecx, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
jl 0x10152ae0
sub dword [esp + 0x80], 1
jne 0x10152ab0
cmp dword [esp + 0x14], 0
jle 0x10152e6b
mov ebp, dword [esp + 0x38]
fld qword [0x102ce5f0]
mov eax, dword [esp + 0x44]
fld qword [0x102ce5f8]
mov esi, dword [esp + 0x3c]
fld qword [0x102cf278]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x2c]
sub eax, ebp
sub esi, ebp
sub ecx, ebp
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x8c], edx
jmp 0x10152bd4
mov eax, dword [esp + 0x80]
movzx eax, word [eax + ebp]
xor ebx, ebx
mov dword [esp + 0x24], eax
cmp eax, ebx
je 0x10152c6c
fild dword [esp + 0x24]
movzx eax, word [ebp]
movzx ecx, word [esi + ebp]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x24], eax
movzx eax, word [edx + ebp]
fild dword [esp + 0x24]
mov dword [esp + 0x24], ecx
fdiv st(1)
fild dword [esp + 0x24]
mov dword [esp + 0x24], eax
fdiv st(2)
fild dword [esp + 0x24]
fdivrp st(3)
fxch st(2)
fsub st(3)
fld st(0)
fmul st(5)
fadd st(2)
call fcn.100dcc82
fxch st(2)
fsub st(3)
mov dword [esp + 0x24], eax
fld st(0)
fmul st(6)
fsubr st(2)
fxch st(3)
fmul qword [0x102ce5e8]
fsubp st(3)
fxch st(2)
call fcn.100dcc82
fxch st(1)
fmul qword [0x102ce5e0]
mov ebx, eax
faddp st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x10152c74
mov dword [esp + 0x24], 0
jmp 0x10152c84
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x10152cad
cmp ecx, 0xff
jle 0x10152c84
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x10152c8c
xor ebx, ebx
jmp 0x10152c99
cmp ebx, 0xff
jle 0x10152c99
mov ebx, 0xff
test eax, eax
jge 0x10152ca1
xor eax, eax
jmp 0x10152cad
cmp eax, 0xff
jle 0x10152cad
mov eax, 0xff
mov cl, byte [esp + 0x24]
mov byte [edi], al
inc edi
mov byte [edi], bl
inc edi
mov byte [edi], cl
inc edi
add ebp, 2
sub dword [esp + 0x8c], 1
jne 0x10152bcd
jmp 0x10152e65
push 0
push eax
push esi
call fcn.100db66b
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x34]
push edi
push edx
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10152ead
mov eax, dword [esp + 0x5c]
push 0
push eax
push esi
call fcn.100db66b
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x64]
push edi
push ecx
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x101533b8
mov edx, dword [esp + 0x60]
push 0
push edx
push esi
call fcn.100db66b
mov eax, dword [esp + 0x60]
push edi
push eax
push esi
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10152eca
xor esi, esi
cmp dword [esp + 0x14], esi
jle 0x10152e6b
fld qword [0x102ce5e8]
mov ebp, dword [esp + 0x2c]
fld qword [0x102ce5f0]
fld qword [0x102ce5f8]
cmp dword [esp + 0x34], 0
je 0x10152d74
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + esi*4]
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
mov edi, eax
sar edi, 1
movzx edx, byte [edi + ecx]
mov ecx, dword [esp + 0x28]
add edx, 0xffffff80
mov dword [esp + 0x8c], edx
movzx edx, byte [eax + ecx]
fild dword [esp + 0x8c]
mov dword [esp + 0x8c], edx
fild dword [esp + 0x8c]
fld st(1)
fmul st(3)
fadd st(1)
call fcn.100dcc82
mov ebx, eax
mov eax, dword [esp + 0x58]
movzx ecx, byte [edi + eax]
add ecx, 0xffffff80
mov dword [esp + 0x8c], ecx
fild dword [esp + 0x8c]
fld st(0)
fmul st(5)
fsubr st(2)
fxch st(3)
fmul st(6)
fsubp st(3)
fxch st(2)
call fcn.100dcc82
fxch st(1)
fmul qword [0x102ce5e0]
mov dword [esp + 0x24], eax
faddp st(1)
call fcn.100dcc82
test ebx, ebx
jge 0x10152dff
xor ebx, ebx
jmp 0x10152e0c
cmp ebx, 0xff
jle 0x10152e0c
mov ebx, 0xff
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x10152e1e
mov dword [esp + 0x24], 0
jmp 0x10152e2e
cmp ecx, 0xff
jle 0x10152e2e
mov dword [esp + 0x24], 0xff
test eax, eax
jge 0x10152e36
xor eax, eax
jmp 0x10152e42
cmp eax, 0xff
jle 0x10152e42
mov eax, 0xff
mov dl, byte [esp + 0x24]
mov byte [ebp], al
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], eax
inc ebp
mov byte [ebp], dl
inc ebp
mov byte [ebp], bl
inc esi
inc ebp
cmp esi, dword [esp + 0x14]
jl 0x10152d62
fstp st(0)
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x78]
add dword [esp + 0x5c], eax
add dword [esp + 0x60], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x50]
add dword [esp + 0x2c], ecx
add dword [esp + 0x70], edx
inc eax
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jl 0x10152990
mov edi, dword [esp + 0xac]
mov ebp, dword [esp + 0x4c]
jmp 0x1015293a
mov eax, dword [esp + 0x10]
push eax
call fcn.100db8dc
mov eax, 0xca
add esp, 4
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x80
ret
mov edx, dword [esp + 0x10]
push edx
jmp 0x10152eb2
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add eax, eax
imul ecx, eax
push ecx
push edx
mov dword [esp + 0x80], eax
call fcn.100de77b
add esp, 8
mov dword [esp + 0x28], eax
test eax, eax
jne 0x10152f18
mov eax, dword [esp + 0x10]
push eax
call fcn.100db8dc
add esp, 4
pop ebp
pop esi
pop ebx
mov eax, 0x66
pop edi
add esp, 0x80
ret
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x20], 0
test ebp, ebp
jle 0x1015293a
lea esp, [esp]
cmp dword [esp + 0x34], 0
je 0x10152f4c
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x20]
mov ebx, dword [eax + ecx*4 + 4]
sub ebx, dword [eax + ecx*4]
mov dword [esp + 0x18], ebx
jmp 0x10152f50
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x94]
mov ecx, ebx
imul ecx, esi
push ecx
push edx
push eax
call fcn.100db5df
add esp, 0xc
cmp eax, esi
jb 0x101533b8
cmp dword [esp + 0xcc], 0
je 0x1015322c
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
add edi, edi
push edi
push 0
push ecx
call fcn.100dc309
mov edx, dword [esp + 0x48]
push edi
push 0
push edx
call fcn.100dc309
mov eax, dword [esp + 0x58]
push edi
push 0
push eax
call fcn.100dc309
mov ecx, dword [esp + 0x68]
push edi
push 0
push ecx
call fcn.100dc309
add esp, 0x30
test ebx, ebx
jle 0x101530ce
mov edx, dword [esp + 0x18]
mov dword [esp + 0x84], edx
xor ebp, ebp
cmp dword [esp + 0x14], ebp
mov edi, 2
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x8c], edi
mov dword [esp + 0x24], ebp
jle 0x101530c0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
sub ecx, eax
sub edx, eax
sub esi, eax
jmp 0x10153010
cmp dword [esp + 0x34], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x80], ebx
je 0x10153036
mov edi, dword [esp + 0x48]
mov ebx, dword [edi + ebp*4 + 4]
sub ebx, dword [edi + ebp*4]
mov edi, dword [esp + 0x8c]
jmp 0x1015303d
mov ebx, dword [esp + 0x80]
test ebx, ebx
jle 0x101530ae
and ebp, 1
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x80], ebp
jmp 0x10153060
mov ebp, dword [esp + 0x1c]
movzx bp, byte [ebx + ebp]
add word [eax + ecx], bp
movzx bp, byte [ebx + edi]
add word [eax], bp
movzx bp, byte [ebx + edi + 1]
add word [eax + edx], bp
inc word [eax + esi]
cmp dword [esp + 0x80], 0
je 0x10153120
add dword [esp + 0x1c], 3
add edi, 4
sub dword [esp + 0x8c], 1
jne 0x10153060
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x8c], edi
inc ebp
add eax, 2
cmp ebp, dword [esp + 0x14]
mov dword [esp + 0x24], ebp
jl 0x10153010
sub dword [esp + 0x84], 1
jne 0x10152fd5
cmp dword [esp + 0x14], 0
jle 0x1015338c
mov ebp, dword [esp + 0x38]
fld qword [0x102ce5f0]
mov eax, dword [esp + 0x44]
fld qword [0x102ce5f8]
mov esi, dword [esp + 0x3c]
fld qword [0x102cf278]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x2c]
sub eax, ebp
sub esi, ebp
sub ecx, ebp
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x80], eax
mov dword [esp + 0x8c], ecx
jmp 0x10153130
inc dword [esp + 0x1c]
jmp 0x10153099
mov eax, dword [esp + 0x80]
movzx eax, word [eax + ebp]
xor ebx, ebx
mov dword [esp + 0x70], eax
cmp eax, ebx
je 0x101531c8
fild dword [esp + 0x70]
movzx edx, word [ebp]
movzx eax, word [esi + ebp]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x70], edx
movzx edx, word [ecx + ebp]
fild dword [esp + 0x70]
mov dword [esp + 0x70], eax
fdiv st(1)
fild dword [esp + 0x70]
mov dword [esp + 0x70], edx
fdiv st(2)
fild dword [esp + 0x70]
fdivrp st(3)
fxch st(2)
fsub st(3)
fld st(0)
fmul st(5)
fadd st(2)
call fcn.100dcc82
fxch st(2)
fsub st(3)
mov dword [esp + 0x24], eax
fld st(0)
fmul st(6)
fsubr st(2)
fxch st(3)
fmul qword [0x102ce5e8]
fsubp st(3)
fxch st(2)
call fcn.100dcc82
fxch st(1)
fmul qword [0x102ce5e0]
mov ebx, eax
faddp st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x101531d0
mov dword [esp + 0x24], 0
jmp 0x101531e0
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x10153209
cmp ecx, 0xff
jle 0x101531e0
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x101531e8
xor ebx, ebx
jmp 0x101531f5
cmp ebx, 0xff
jle 0x101531f5
mov ebx, 0xff
test eax, eax
jge 0x101531fd
xor eax, eax
jmp 0x10153209
cmp eax, 0xff
jle 0x10153209
mov eax, 0xff
mov byte [edi], al
mov al, byte [esp + 0x24]
inc edi
mov byte [edi], bl
inc edi
mov byte [edi], al
inc edi
add ebp, 2
sub dword [esp + 0x8c], 1
jne 0x10153129
jmp 0x10153386
xor ebp, ebp
cmp dword [esp + 0x14], ebp
mov dword [esp + 0x1c], ebp
lea esi, [ebp + 2]
jle 0x1015338c
fld qword [0x102ce5e8]
mov edi, dword [esp + 0x2c]
fld qword [0x102ce5f0]
fld qword [0x102ce5f8]
cmp dword [esp + 0x34], 0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x84], ecx
je 0x10153279
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + ebp*4 + 4]
sub ecx, dword [eax + ebp*4]
mov dword [esp + 0x84], ecx
mov eax, dword [esp + 0x28]
movzx edx, byte [eax + esi + 1]
mov ecx, dword [esp + 0x1c]
add edx, 0xffffff80
mov dword [esp + 0x8c], edx
movzx edx, byte [ecx + eax]
fild dword [esp + 0x8c]
mov dword [esp + 0x8c], edx
fild dword [esp + 0x8c]
fld st(1)
fmul st(3)
fadd st(1)
call fcn.100dcc82
mov ebx, eax
mov eax, dword [esp + 0x28]
movzx ecx, byte [esi + eax]
add ecx, 0xffffff80
mov dword [esp + 0x8c], ecx
fild dword [esp + 0x8c]
fld st(0)
fmul st(5)
fsubr st(2)
fxch st(3)
fmul st(6)
fsubp st(3)
fxch st(2)
call fcn.100dcc82
fxch st(1)
fmul qword [0x102ce5e0]
mov dword [esp + 0x24], eax
faddp st(1)
call fcn.100dcc82
test ebx, ebx
jge 0x101532fd
xor ebx, ebx
jmp 0x1015330a
cmp ebx, 0xff
jle 0x1015330a
mov ebx, 0xff
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x1015331c
mov dword [esp + 0x24], 0
jmp 0x1015332c
cmp ecx, 0xff
jle 0x1015332c
mov dword [esp + 0x24], 0xff
test eax, eax
jge 0x10153334
xor eax, eax
jmp 0x10153340
cmp eax, 0xff
jle 0x10153340
mov eax, 0xff
mov dl, byte [esp + 0x24]
mov byte [edi], al
inc edi
mov byte [edi], dl
inc edi
mov byte [edi], bl
mov eax, ebp
inc edi
and eax, 1
je 0x10153369
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x84]
lea ecx, [ecx + edx*4 - 1]
mov dword [esp + 0x1c], ecx
jmp 0x1015336d
inc dword [esp + 0x1c]
test eax, eax
je 0x1015337b
mov edx, dword [esp + 0x84]
lea esi, [esi + edx*4]
inc ebp
cmp ebp, dword [esp + 0x14]
jl 0x10153255
fstp st(0)
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x88]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x4c]
inc eax
cmp eax, ebp
mov dword [esp + 0x20], eax
jl 0x10152f30
mov edi, dword [esp + 0xac]
jmp 0x1015293a
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x10152eb2
mov ecx, dword [edi]
movzx edi, ax
mov eax, dword [ecx + 4]
cdq
idiv edi
mov ecx, eax
cmp ecx, 1
jge 0x101533d9
mov ecx, 1
lea edx, [ecx + ecx*2]
mov dword [esp + 0x80], edx
mov eax, ebp
cdq
idiv ecx
mov ebp, eax
mov eax, dword [esp + 0x14]
cdq
idiv ecx
mov edi, eax
mov eax, dword [esp + 0x30]
imul eax, ecx
cmp dword [esp + 0xd0], 0
mov dword [esp + 0x14], edi
mov dword [esp + 0x50], eax
je 0x10153419
lea ebx, [edi + edi*2 + 3]
and ebx, 0xfffffffc
mov dword [esp + 0x30], ebx
jmp 0x10153422
lea eax, [edi + edi*2]
mov dword [esp + 0x30], eax
mov ebx, eax
mov ecx, dword [esp + 0xc0]
mov edx, dword [ecx]
push 0x42c
push edx
call fcn.100de77b
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x10152f08
mov ecx, dword [esp + 0xc0]
imul ebx, ebp
mov edx, dword [ecx]
lea eax, [ebx + 0x80]
push eax
push edx
call fcn.100de77b
mov ecx, dword [esp + 0xc0]
mov dword [ecx], eax
xor ecx, ecx
add esp, 8
cmp eax, ecx
je 0x10152f08
mov edx, dword [esi]
mov dword [edx], 0x28
mov eax, dword [esi]
mov dword [eax + 4], edi
mov edx, dword [esi]
mov dword [edx + 8], ebp
mov eax, dword [esi]
mov edx, 1
mov word [eax + 0xc], dx
mov eax, dword [esi]
mov edx, 0x18
mov word [eax + 0xe], dx
mov eax, dword [esi]
mov dword [eax + 0x10], ecx
mov edx, dword [esi]
mov dword [edx + 0x14], ebx
mov eax, dword [esi]
mov dword [eax + 0x18], ecx
mov edx, dword [esi]
mov dword [edx + 0x1c], ecx
mov eax, dword [esi]
mov dword [eax + 0x24], ecx
mov edx, dword [esi]
mov dword [edx + 0x20], ecx
xor eax, eax
lea ebx, [ebx]
mov edx, dword [esi]
mov byte [edx + eax*4 + 0x2a], al
mov edx, dword [esi]
mov byte [edx + eax*4 + 0x29], al
mov edx, dword [esi]
mov byte [edx + eax*4 + 0x28], al
mov edx, dword [esi]
mov byte [edx + eax*4 + 0x2b], cl
inc eax
cmp eax, 0x100
jl 0x101534c0
cmp ebp, ecx
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xb8]
mov esi, dword [edx]
mov eax, dword [eax]
mov dword [esp + 0x88], esi
jle 0x10153577
lea ecx, [eax + 1]
mov dword [esp + 0x8c], ecx
lea edx, [esi + 1]
mov dword [esp + 0x84], ebp
test edi, edi
jle 0x1015354c
mov eax, edx
sub esi, edx
mov ebp, 1
mov edi, edi
movzx ebx, byte [esi + eax]
mov byte [ecx - 1], bl
movzx ebx, byte [eax]
mov byte [ecx], bl
movzx ebx, byte [eax + ebp]
add eax, dword [esp + 0x80]
mov byte [ecx + 1], bl
add ecx, 3
sub edi, ebp
jne 0x10153520
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x50]
add ecx, dword [esp + 0x30]
add esi, eax
add edx, eax
sub dword [esp + 0x84], 1
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], esi
jne 0x10153511
mov ecx, dword [esp + 0xa4]
fld qword [0x102cf220]
fstp qword [ecx + 0x40c]
xor eax, eax
fld qword [0x102cf218]
mov edx, 0xff
fstp qword [ecx + 0x414]
mov dword [ecx + 0x404], eax
mov dword [ecx + 0x408], edx
mov dword [ecx + 0x42c], eax
mov dword [ecx + 0x430], edx
add ecx, 0x204
jmp 0x101535c0
mov edx, eax
shl edx, 4
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, 0x100
jl 0x101535c0
pop ebp
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0x80
ret
pop esi
pop ebx
mov eax, 2
pop edi
add esp, 0x80
ret
mov eax, 1
pop edi
add esp, 0x80
ret
mov eax, 2
add esp, 0x80
ret