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

Disassembly:
jmp 0x10153610
mov ecx, dword [esp + 0x14]
sub esp, 0x7c
cmp dword [ecx + 0x4d4], 3
jne 0x10154698
cmp dword [ecx + 0x4e0], 8
jne 0x10154698
cmp dword [esp + 0x94], 0
push edi
je 0x1015468e
mov edi, dword [esp + 0x9c]
test edi, edi
je 0x1015468e
mov eax, dword [ecx + 0x4ec]
push ebp
push esi
mov esi, dword [ecx + 0x4e8]
mov ebp, eax
mov dword [esp + 0x68], eax
imul eax, esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], ebp
mov dword [esp + 0x84], eax
test esi, esi
je 0x10154682
test ebp, ebp
je 0x10154682
mov cx, word [esp + 0x94]
push ebx
mov dword [esp + 0x34], 0
test cx, cx
jbe 0x1015370c
movzx edx, cx
cmp edx, ebp
jge 0x1015370c
mov cx, word [esp + 0x9c]
test cx, cx
jbe 0x1015370c
movzx ecx, cx
cmp ecx, esi
jge 0x1015370c
fild dword [esp + 0x7c]
mov ebp, edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], ecx
fidiv dword [esp + 0x14]
mov dword [esp + 0x34], 1
fst qword [esp + 0x80]
fild dword [esp + 0x78]
fidiv dword [esp + 0x20]
fst qword [esp + 0x70]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x101536fc
fstp st(0)
call fcn.100dcc82
mov ebx, eax
inc ebx
mov dword [esp + 0x18], ebx
jmp 0x10153774
fstp st(1)
call fcn.100dcc82
mov ebx, eax
inc ebx
mov dword [esp + 0x18], ebx
jmp 0x10153774
mov ecx, dword [esp + 0x94]
test ecx, ecx
jbe 0x10153748
xor edx, edx
div ecx
mov dword [esp + 0x80], eax
fild dword [esp + 0x80]
test eax, eax
jge 0x10153733
fadd qword [0x102cf268]
call fcn.100dcf8e
call fcn.100dcc82
mov ebx, eax
cmp ebx, 1
mov dword [esp + 0x18], ebx
jge 0x10153753
mov ebx, 1
mov dword [esp + 0x18], ebx
jmp 0x10153755
jne 0x10153760
mov dword [esp + 0xc8], 0
mov eax, ebp
cdq
idiv ebx
mov ebp, eax
mov dword [esp + 0x14], eax
mov eax, esi
cdq
idiv ebx
mov dword [esp + 0x20], eax
cmp dword [esp + 0xcc], 0
je 0x10153787
lea eax, [ebp + ebp*2 + 3]
and eax, 0xfffffffc
jmp 0x1015378b
lea eax, [ebp + ebp*2]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xbc]
cmp dword [eax], 0
jne 0x101537b0
push eax
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x1015400f
lea ecx, [esp + 0x10]
push ecx
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x1015400f
cmp dword [esp + 0xc8], 0
je 0x1015383f
mov edx, dword [esp + 0x10]
lea esi, [ebp + ebp]
push esi
push edx
call fcn.100de77b
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
push esi
push eax
call fcn.100de77b
mov ecx, dword [esp + 0x20]
push esi
push ecx
mov dword [esp + 0x54], eax
call fcn.100de77b
mov edx, dword [esp + 0x28]
push esi
push edx
mov dword [esp + 0x60], eax
call fcn.100de77b
add esp, 0x20
mov dword [esp + 0x48], eax
test eax, eax
je 0x1015404e
cmp dword [esp + 0x38], 0
je 0x1015404e
cmp dword [esp + 0x3c], 0
je 0x1015404e
cmp dword [esp + 0x40], 0
je 0x1015404e
cmp dword [esp + 0x34], 0
je 0x10153908
mov edx, dword [esp + 0x10]
lea ecx, [ebp*4 + 4]
push ecx
push edx
call fcn.100de77b
mov edx, dword [esp + 0x18]
mov esi, eax
mov eax, dword [esp + 0x28]
lea ecx, [eax*4 + 4]
push ecx
push edx
mov dword [esp + 0x5c], esi
call fcn.100de77b
add esp, 0x10
mov dword [esp + 0x50], eax
test esi, esi
je 0x10153a44
test eax, eax
je 0x10153a44
xor esi, esi
mov dword [esp + 0x1c], esi
test ebp, ebp
jle 0x101538bd
fld qword [esp + 0x80]
fild dword [esp + 0x1c]
fmul st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x4c]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
mov dword [esp + 0x1c], esi
jl 0x101538a0
fstp st(0)
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x4c]
xor esi, esi
cmp dword [esp + 0x20], esi
mov dword [eax + ebp*4], edx
mov dword [esp + 0x1c], esi
jle 0x101538f7
fld qword [esp + 0x70]
fild dword [esp + 0x1c]
fmul st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x50]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, dword [esp + 0x20]
mov dword [esp + 0x1c], esi
jl 0x101538d8
fstp st(0)
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
mov dword [ecx + edx*4], eax
jmp 0x1015390c
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x30]
xor ecx, ecx
imul esi, edx
cmp dword [esp + 0xc4], ecx
je 0x10153929
mov eax, dword [esp + 0xa4]
cmp dword [eax], ecx
jne 0x10153959
mov edx, dword [esp + 0xbc]
mov eax, dword [edx]
lea ecx, [esi + 0x4ac]
push ecx
push eax
call fcn.100de77b
mov ecx, dword [esp + 0xac]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x10153a44
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov eax, dword [esp + 0xa4]
mov eax, dword [eax]
lea eax, [eax + esi + 0x80]
mov dword [edi], eax
cmp eax, ecx
je 0x10153a74
mov dword [eax], 0x28
mov eax, dword [edi]
mov dword [eax + 4], ebp
mov eax, dword [edi]
mov dword [eax + 8], edx
mov eax, dword [edi]
mov ebp, 1
mov word [eax + 0xc], bp
mov eax, dword [edi]
mov ebp, 0x18
mov word [eax + 0xe], bp
mov eax, dword [edi]
mov dword [eax + 0x10], ecx
mov eax, dword [edi]
mov dword [eax + 0x14], esi
mov eax, dword [edi]
mov dword [eax + 0x18], ecx
mov eax, dword [edi]
mov dword [eax + 0x1c], ecx
mov eax, dword [edi]
mov dword [eax + 0x24], ecx
mov eax, dword [edi]
mov dword [eax + 0x20], ecx
xor eax, eax
lea esp, [esp]
mov esi, dword [edi]
mov byte [esi + eax*4 + 0x2a], al
mov esi, dword [edi]
mov byte [esi + eax*4 + 0x29], al
mov esi, dword [edi]
mov byte [esi + eax*4 + 0x28], al
mov esi, dword [edi]
mov byte [esi + eax*4 + 0x2b], 0
inc eax
cmp eax, 0x100
jl 0x101539c0
cmp dword [esp + 0xc0], ecx
je 0x10153a05
mov eax, dword [esp + 0x30]
lea esi, [edx - 1]
mov edx, dword [esp + 0xa4]
imul esi, eax
add esi, dword [edx]
neg eax
mov dword [esp + 0x78], eax
jmp 0x10153a16
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0x30]
mov esi, dword [eax]
mov dword [esp + 0x78], edx
mov eax, dword [esp + 0xa0]
cmp dword [eax + 0x4d8], ecx
je 0x1015401e
imul ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x10]
push ebx
push ecx
call fcn.100de77b
add esp, 8
mov dword [esp + 0x44], eax
test eax, eax
jne 0x10153a5e
mov edx, dword [esp + 0x10]
push edx
call fcn.100db8dc
add esp, 4
pop ebx
pop esi
pop ebp
mov eax, 0x66
pop edi
add esp, 0x7c
ret
mov eax, dword [esp + 0x10]
push ebx
push eax
call fcn.100de77b
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
jne 0x10153a8e
mov ecx, dword [esp + 0x10]
push ecx
call fcn.100db8dc
add esp, 4
pop ebx
pop esi
pop ebp
mov eax, 0x66
pop edi
add esp, 0x7c
ret
mov edx, dword [esp + 0x10]
push ebx
push edx
call fcn.100de77b
add esp, 8
mov dword [esp + 0x54], eax
test eax, eax
je 0x1015404e
mov ebx, dword [esp + 0x90]
push 1
push 0
push ebx
call fcn.100db66b
mov ecx, dword [esp + 0x94]
lea ebp, [eax + ecx]
add ecx, ebp
add esp, 0xc
cmp dword [esp + 0x20], 0
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ebp
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], 0
jle 0x10153fb5
jmp 0x10153aff
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x90]
cmp dword [esp + 0x34], 0
je 0x10153b1b
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x1c]
mov esi, dword [edx + ecx*4 + 4]
sub esi, dword [edx + ecx*4]
mov dword [esp + 0x18], esi
jmp 0x10153b1f
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x6c]
imul esi, edi
push 0
push eax
push ebx
mov dword [esp + 0x88], esi
call fcn.100db66b
cmp dword [esp + 0xd4], 0
je 0x10153e0e
mov edx, dword [esp + 0x50]
push esi
push edx
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10153ffd
push 0
push ebp
push ebx
call fcn.100db66b
mov eax, dword [esp + 0x64]
push esi
push eax
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x1015446b
mov ecx, dword [esp + 0x5c]
push 0
push ecx
push ebx
call fcn.100db66b
mov edx, dword [esp + 0x60]
push esi
push edx
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10154017
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 + 0x6c]
push edi
push 0
push eax
call fcn.100dc309
add esp, 0x30
cmp dword [esp + 0x18], 0
jle 0x10153cad
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x88], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x60], ecx
jle 0x10153c9f
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x38]
sub edx, eax
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x48]
sub ebp, eax
sub edx, eax
mov dword [esp + 0x28], edx
cmp dword [esp + 0x34], 0
mov edi, dword [esp + 0x18]
je 0x10153c3a
mov edx, dword [esp + 0x4c]
mov edi, dword [edx + ecx*4 + 4]
sub edi, dword [edx + ecx*4]
test edi, edi
jle 0x10153c91
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x54]
lea ecx, [edx + ebx]
mov edx, dword [esp + 0x44]
sub edx, ebx
sub esi, ebx
add dword [esp + 0x60], edi
mov dword [esp + 0x80], edi
mov edi, dword [esp + 0x70]
movzx ebx, byte [edx + ecx]
add word [eax + ebp], bx
movzx ebx, byte [ecx]
add word [eax], bx
movzx ebx, byte [esi + ecx]
add word [edi + eax], bx
mov ebx, dword [esp + 0x28]
inc word [ebx + eax]
inc ecx
sub dword [esp + 0x80], 1
jne 0x10153c64
mov ecx, dword [esp + 0x24]
inc ecx
add eax, 2
cmp ecx, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
jl 0x10153c24
sub dword [esp + 0x88], 1
jne 0x10153bf2
cmp dword [esp + 0x14], 0
jle 0x10153f83
mov ebp, dword [esp + 0x38]
fld qword [0x102ce5f0]
mov eax, dword [esp + 0x48]
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 + 0x60], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x70], eax
mov dword [esp + 0x88], ecx
jmp 0x10153cfd
mov eax, dword [esp + 0x70]
movzx eax, word [eax + ebp]
xor ebx, ebx
mov dword [esp + 0x80], eax
cmp eax, ebx
je 0x10153daa
fild dword [esp + 0x80]
movzx edx, word [ebp]
movzx eax, word [esi + ebp]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x80], edx
movzx edx, word [ecx + ebp]
fild dword [esp + 0x80]
mov dword [esp + 0x80], eax
fdiv st(1)
fild dword [esp + 0x80]
mov dword [esp + 0x80], edx
fdiv st(2)
fild dword [esp + 0x80]
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 0x10153db2
mov dword [esp + 0x24], 0
jmp 0x10153dc2
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x10153deb
cmp ecx, 0xff
jle 0x10153dc2
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x10153dca
xor ebx, ebx
jmp 0x10153dd7
cmp ebx, 0xff
jle 0x10153dd7
mov ebx, 0xff
test eax, eax
jge 0x10153ddf
xor eax, eax
jmp 0x10153deb
cmp eax, 0xff
jle 0x10153deb
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 + 0x88], 1
jne 0x10153cf9
jmp 0x10153f7d
mov ecx, dword [esp + 0x50]
push edi
push ecx
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10153ffd
push 0
push ebp
push ebx
call fcn.100db66b
mov edx, dword [esp + 0x64]
push edi
push edx
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x1015446b
mov eax, dword [esp + 0x5c]
push 0
push eax
push ebx
call fcn.100db66b
mov ecx, dword [esp + 0x60]
push edi
push ecx
push ebx
call fcn.100db5df
add esp, 0x18
cmp eax, edi
jne 0x10154017
xor ebp, ebp
xor esi, esi
cmp dword [esp + 0x14], ebp
jle 0x10153f83
fld qword [0x102ce5e8]
mov edi, dword [esp + 0x2c]
fld qword [0x102ce5f0]
fld qword [0x102ce5f8]
cmp dword [esp + 0x34], 0
je 0x10153e9b
mov edx, dword [esp + 0x4c]
mov ebp, dword [edx + esi*4]
mov eax, dword [esp + 0x54]
movzx ecx, byte [eax + ebp]
mov edx, dword [esp + 0x44]
movzx eax, byte [edx + ebp]
add ecx, 0xffffff80
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
fld st(1)
fmul st(3)
fadd st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x58]
movzx edx, byte [ecx + ebp]
add edx, 0xffffff80
mov dword [esp + 0x88], edx
mov ebx, eax
fild dword [esp + 0x88]
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 + 0x28], eax
faddp st(1)
call fcn.100dcc82
test ebx, ebx
jge 0x10153f1e
xor ebx, ebx
jmp 0x10153f2b
cmp ebx, 0xff
jle 0x10153f2b
mov ebx, 0xff
mov ecx, dword [esp + 0x28]
test ecx, ecx
jge 0x10153f3d
mov dword [esp + 0x28], 0
jmp 0x10153f4d
cmp ecx, 0xff
jle 0x10153f4d
mov dword [esp + 0x28], 0xff
test eax, eax
jge 0x10153f55
xor eax, eax
jmp 0x10153f61
cmp eax, 0xff
jle 0x10153f61
mov eax, 0xff
add ebp, dword [esp + 0x18]
mov byte [edi], al
mov al, byte [esp + 0x28]
inc edi
mov byte [edi], al
inc edi
mov byte [edi], bl
inc esi
inc edi
cmp esi, dword [esp + 0x14]
jl 0x10153e8d
fstp st(0)
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x7c]
add dword [esp + 0x64], eax
add dword [esp + 0x68], eax
add dword [esp + 0x5c], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x78]
add dword [esp + 0x2c], ecx
inc eax
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
jl 0x10153af0
mov edi, dword [esp + 0xa8]
mov ecx, dword [esp + 0x10]
push ecx
call fcn.100db8dc
add esp, 4
cmp dword [esp + 0xb4], 0
je 0x10154678
mov esi, dword [esp + 0xb8]
test esi, esi
je 0x10154678
mov ax, word [esp + 0xac]
test ax, ax
jne 0x10154475
pop ebx
pop esi
pop ebp
mov eax, 1
pop edi
add esp, 0x7c
ret
mov edx, dword [esp + 0x10]
push edx
call fcn.100db8dc
mov eax, 0xca
add esp, 4
pop ebx
pop esi
pop ebp
pop edi
add esp, 0x7c
ret
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x10154002
mov eax, dword [esp + 0x6c]
lea eax, [eax + eax*2]
mov ecx, ebx
imul ecx, eax
lea edx, [ebx + ebx*2]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x10]
push ecx
push edx
mov dword [esp + 0x88], eax
call fcn.100de77b
add esp, 8
mov dword [esp + 0x44], eax
test eax, eax
jne 0x10154068
mov eax, dword [esp + 0x10]
push eax
call fcn.100db8dc
add esp, 4
pop ebx
pop esi
pop ebp
mov eax, 0x66
pop edi
add esp, 0x7c
ret
cmp dword [esp + 0x20], 0
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], 0
jle 0x10153fb5
mov ecx, dword [esp + 0x1c]
jmp 0x10154094
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x50]
je 0x101540aa
mov ebx, dword [eax + ecx*4 + 4]
sub ebx, dword [eax + ecx*4]
mov dword [esp + 0x18], ebx
mov edi, dword [esp + 0x80]
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x90]
mov ecx, ebx
imul ecx, edi
push ecx
push ebp
push edx
call fcn.100db5df
add esp, 0xc
cmp eax, edi
jb 0x1015446b
xor edi, edi
cmp dword [esp + 0xc8], edi
je 0x10154327
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add edi, edi
push edi
push 0
push eax
mov esi, ebp
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 + 0x6c]
push edi
push 0
push eax
call fcn.100dc309
add esp, 0x30
test ebx, ebx
jle 0x101541e1
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x7c], ecx
xor ecx, ecx
cmp dword [esp + 0x14], ecx
mov dword [esp + 0x24], ecx
jle 0x101541cf
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x48]
sub edi, eax
sub edx, eax
sub ebp, eax
mov dword [esp + 0x70], edi
mov dword [esp + 0x28], ebp
jmp 0x10154166
mov ebp, dword [esp + 0x28]
cmp dword [esp + 0x34], 0
mov ebx, dword [esp + 0x18]
je 0x10154188
mov edi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
mov ebx, dword [edi + ebp*4 + 4]
sub ebx, dword [edi + ebp*4]
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x70]
test ebx, ebx
jle 0x101541bd
mov dword [esp + 0x88], ebx
movzx ebx, byte [esi + ecx]
add word [eax + edx], bx
movzx ebx, byte [esi + ecx + 1]
add word [eax], bx
inc ecx
movzx ebx, byte [esi + ecx + 1]
add word [eax + edi], bx
inc word [eax + ebp]
inc ecx
inc ecx
sub dword [esp + 0x88], 1
jne 0x10154193
mov ebx, dword [esp + 0x24]
inc ebx
add eax, 2
cmp ebx, dword [esp + 0x14]
mov dword [esp + 0x24], ebx
jl 0x10154162
add esi, dword [esp + 0x80]
sub dword [esp + 0x7c], 1
jne 0x10154132
cmp dword [esp + 0x14], 0
jle 0x10154447
mov edi, dword [esp + 0x38]
fld qword [0x102ce5f0]
mov eax, dword [esp + 0x48]
fld qword [0x102ce5f8]
mov ebp, dword [esp + 0x3c]
fld qword [0x102cf278]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x2c]
sub eax, edi
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x40]
sub ebp, edi
sub eax, edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x88], edx
mov eax, dword [esp + 0x70]
movzx eax, word [edi + eax]
xor ebx, ebx
mov dword [esp + 0x7c], eax
cmp eax, ebx
je 0x101542c3
fild dword [esp + 0x7c]
movzx ecx, word [edi]
movzx edx, word [edi + ebp]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x7c], ecx
movzx ecx, word [edi + eax]
fild dword [esp + 0x7c]
mov dword [esp + 0x7c], edx
fdiv st(1)
fild dword [esp + 0x7c]
mov dword [esp + 0x7c], ecx
fdiv st(2)
fild dword [esp + 0x7c]
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 0x101542cb
mov dword [esp + 0x24], 0
jmp 0x101542db
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x10154304
cmp ecx, 0xff
jle 0x101542db
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x101542e3
xor ebx, ebx
jmp 0x101542f0
cmp ebx, 0xff
jle 0x101542f0
mov ebx, 0xff
test eax, eax
jge 0x101542f8
xor eax, eax
jmp 0x10154304
cmp eax, 0xff
jle 0x10154304
mov eax, 0xff
mov dl, byte [esp + 0x24]
mov byte [esi], al
inc esi
mov byte [esi], bl
inc esi
mov byte [esi], dl
inc esi
add edi, 2
sub dword [esp + 0x88], 1
jne 0x1015422b
jmp 0x10154441
cmp dword [esp + 0x14], edi
mov dword [esp + 0x24], edi
jle 0x10154447
fld qword [0x102ce5e8]
fld qword [0x102ce5f0]
fld qword [0x102ce5f8]
movzx eax, byte [edi + ebp + 2]
movzx ecx, byte [edi + ebp]
add eax, 0xffffff80
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
fld st(1)
fmul st(3)
fadd st(1)
call fcn.100dcc82
movzx edx, byte [edi + ebp + 1]
add edx, 0xffffff80
mov dword [esp + 0x88], edx
mov ebx, eax
fild dword [esp + 0x88]
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 + 0x28], eax
faddp st(1)
call fcn.100dcc82
test ebx, ebx
jge 0x101543c0
xor ebx, ebx
jmp 0x101543cd
cmp ebx, 0xff
jle 0x101543cd
mov ebx, 0xff
mov ecx, dword [esp + 0x28]
test ecx, ecx
jge 0x101543df
mov dword [esp + 0x28], 0
jmp 0x101543ef
cmp ecx, 0xff
jle 0x101543ef
mov dword [esp + 0x28], 0xff
test eax, eax
jge 0x101543f7
xor eax, eax
jmp 0x10154403
cmp eax, 0xff
jle 0x10154403
mov eax, 0xff
mov ecx, dword [esp + 0x24]
mov byte [esi], al
mov al, byte [esp + 0x28]
inc esi
mov byte [esi], al
inc esi
mov byte [esi], bl
inc esi
cmp dword [esp + 0x34], 0
je 0x1015442e
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + ecx*4 + 4]
sub eax, dword [edx + ecx*4]
lea edx, [eax + edi]
lea edi, [edx + eax*2]
jmp 0x10154432
add edi, dword [esp + 0x68]
inc ecx
cmp ecx, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
jl 0x10154347
fstp st(0)
fstp st(0)
fstp st(0)
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
add esi, dword [esp + 0x78]
inc ecx
cmp ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], ecx
jl 0x10154090
jmp 0x10153fae
mov eax, dword [esp + 0x10]
push eax
jmp 0x10154002
mov edx, dword [edi]
movzx ecx, ax
mov eax, dword [edx + 4]
cdq
idiv ecx
mov ecx, eax
cmp ecx, 1
jge 0x1015448c
mov ecx, 1
mov eax, dword [esp + 0x20]
lea edx, [ecx + ecx*2]
mov dword [esp + 0x70], edx
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 + 0xcc], 0
mov dword [esp + 0x14], edi
mov dword [esp + 0x7c], eax
je 0x101544c7
lea eax, [edi + edi*2 + 3]
and eax, 0xfffffffc
jmp 0x101544ca
lea eax, [edi + edi*2]
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx]
push 0x42c
push edx
mov dword [esp + 0x38], eax
call fcn.100de77b
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x1015405b
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0xbc]
imul ebx, ebp
mov edx, dword [ecx]
lea eax, [ebx + 0x80]
push eax
push edx
call fcn.100de77b
mov ecx, dword [esp + 0xbc]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x1015405b
mov edx, dword [esi]
mov dword [edx], 0x28
mov eax, dword [esi]
mov dword [eax + 4], edi
mov ecx, dword [esi]
mov dword [ecx + 8], ebp
mov edx, dword [esi]
mov eax, 1
mov word [edx + 0xc], ax
mov ecx, dword [esi]
mov edx, 0x18
mov word [ecx + 0xe], dx
mov eax, dword [esi]
xor ecx, ecx
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 0x10154570
cmp ebp, ecx
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xb4]
mov esi, dword [edx]
mov eax, dword [eax]
mov dword [esp + 0x80], esi
jle 0x10154621
inc eax
mov dword [esp + 0x88], eax
lea edx, [esi + 1]
mov dword [esp + 0x78], ebp
lea esp, [esp]
test edi, edi
jle 0x101545f9
mov ecx, eax
mov eax, edx
sub esi, edx
mov ebp, 1
nop
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 + 0x70]
mov byte [ecx + 1], bl
add ecx, 3
sub edi, ebp
jne 0x101545d0
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x7c]
add eax, dword [esp + 0x30]
add esi, ecx
add edx, ecx
sub dword [esp + 0x78], 1
mov dword [esp + 0x88], eax
mov dword [esp + 0x80], esi
jne 0x101545c0
mov ecx, dword [esp + 0xa0]
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
mov edx, eax
shl edx, 4
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, 0x100
jl 0x10154665
pop ebx
pop esi
pop ebp
xor eax, eax
pop edi
add esp, 0x7c
ret
pop esi
pop ebp
mov eax, 2
pop edi
add esp, 0x7c
ret
mov eax, 1
pop edi
add esp, 0x7c
ret
mov eax, 2
add esp, 0x7c
ret