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

Disassembly:
mov edx, dword [esp + 0x14]
sub esp, 0x80
cmp dword [edx + 0x4d4], 3
jne 0x100ae77c
cmp dword [edx + 0x4e0], 8
jne 0x100ae77c
cmp dword [esp + 0x98], 0
push edi
je 0x100ae76f
mov edi, dword [esp + 0xa0]
test edi, edi
je 0x100ae76f
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 0x100ae760
test esi, esi
je 0x100ae760
mov ax, word [esp + 0x98]
push ebp
mov dword [esp + 0x34], 0
test ax, ax
jbe 0x100ad6f7
movzx eax, ax
cmp eax, esi
jge 0x100ad6f7
mov cx, word [esp + 0xa0]
test cx, cx
jbe 0x100ad6f7
movzx ebp, cx
cmp ebp, ebx
jge 0x100ad6f7
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 0x100ad6e9
fstp st(0)
call fcn.1012b4f0
inc eax
mov dword [esp + 0x18], eax
jmp 0x100ad760
fstp st(1)
call fcn.1012b4f0
inc eax
mov dword [esp + 0x18], eax
jmp 0x100ad760
mov ecx, dword [esp + 0x98]
test ecx, ecx
jbe 0x100ad732
mov eax, esi
imul eax, ebx
xor edx, edx
div ecx
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
test eax, eax
jge 0x100ad71d
fadd qword [0x101470e8]
call fcn.10037bb0
call fcn.1012b4f0
mov ecx, eax
cmp ecx, 1
mov dword [esp + 0x18], ecx
jge 0x100ad73d
mov ecx, 1
mov dword [esp + 0x18], ecx
jmp 0x100ad73f
jne 0x100ad74a
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 0x100ad773
lea eax, [esi + esi*2 + 3]
and eax, 0xfffffffc
jmp 0x100ad776
lea eax, [esi + esi*2]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc0]
cmp dword [eax], 0
jne 0x100ad79b
push eax
call fcn.10009b30
movzx eax, ax
add esp, 4
test ax, ax
jne 0x100ae03f
lea ecx, [esp + 0x10]
push ecx
call fcn.10009b30
movzx eax, ax
add esp, 4
test ax, ax
jne 0x100ae03f
cmp dword [esp + 0xcc], 0
je 0x100ad829
mov edx, dword [esp + 0x10]
lea ebx, [esi + esi]
push ebx
push edx
call fcn.10009ed0
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
push ebx
push eax
call fcn.10009ed0
mov ecx, dword [esp + 0x20]
push ebx
push ecx
mov dword [esp + 0x54], eax
call fcn.10009ed0
mov edx, dword [esp + 0x28]
push ebx
push edx
mov dword [esp + 0x60], eax
call fcn.10009ed0
add esp, 0x20
mov dword [esp + 0x44], eax
test eax, eax
je 0x100ae07b
cmp dword [esp + 0x38], 0
je 0x100ae07b
cmp dword [esp + 0x3c], 0
je 0x100ae07b
cmp dword [esp + 0x40], 0
je 0x100ae07b
cmp dword [esp + 0x34], 0
je 0x100ad8e7
mov edx, dword [esp + 0x10]
lea ecx, [esi*4 + 4]
push ecx
push edx
call fcn.10009ed0
mov ecx, dword [esp + 0x18]
mov ebx, eax
lea eax, [ebp*4 + 4]
push eax
push ecx
mov dword [esp + 0x58], ebx
call fcn.10009ed0
add esp, 0x10
mov dword [esp + 0x68], eax
test ebx, ebx
je 0x100ada10
test eax, eax
je 0x100ada10
xor ebx, ebx
mov dword [esp + 0x20], ebx
test esi, esi
jle 0x100ad8a0
fld qword [esp + 0x78]
fild dword [esp + 0x20]
fmul st(1)
call fcn.1012b4f0
mov edx, dword [esp + 0x48]
mov dword [edx + ebx*4], eax
inc ebx
cmp ebx, esi
mov dword [esp + 0x20], ebx
jl 0x100ad883
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 0x100ad8d9
fld qword [esp + 0x70]
fild dword [esp + 0x20]
fmul st(1)
call fcn.1012b4f0
mov edx, dword [esp + 0x68]
mov dword [edx + ebx*4], eax
inc ebx
cmp ebx, ebp
mov dword [esp + 0x20], ebx
jl 0x100ad8bc
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.10009ed0
mov ecx, dword [esp + 0xb0]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x100ada10
lea eax, [eax + ebx + 0x80]
xor ecx, ecx
mov dword [edi], eax
cmp eax, ecx
je 0x100ae07b
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 0x100ad971
cmp dword [esp + 0xc4], ecx
je 0x100ad9b8
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 0x100ad9cc
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 0x100ae051
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.10009ed0
add esp, 8
mov dword [esp + 0x28], eax
test eax, eax
jne 0x100ada2d
mov edx, dword [esp + 0x10]
push edx
call fcn.10009d90
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.10009ed0
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
jne 0x100ada60
mov ecx, dword [esp + 0x10]
push ecx
call fcn.10009d90
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.10009ed0
add esp, 8
mov dword [esp + 0x54], eax
test eax, eax
je 0x100ae07b
mov esi, dword [esp + 0x94]
push 1
push 0
push esi
call fcn.1000c5c0
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 0x100adb1f
mov edx, dword [esp + 0x10]
push edx
call fcn.10009d90
add esp, 4
cmp dword [esp + 0xb8], 0
je 0x100ae753
mov esi, dword [esp + 0xbc]
test esi, esi
je 0x100ae753
mov ax, word [esp + 0xb0]
test ax, ax
jne 0x100ae542
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 0x100ade50
cmp dword [esp + 0x34], 0
je 0x100adb45
mov edx, dword [esp + 0x68]
mov ebx, dword [edx + ecx*4 + 4]
sub ebx, dword [edx + ecx*4]
mov dword [esp + 0x18], ebx
jmp 0x100adb49
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.1000c5c0
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, ebp
jne 0x100ae02d
mov edx, dword [esp + 0x5c]
push 0
push edx
push esi
call fcn.1000c5c0
mov ebp, dword [esp + 0x84]
mov eax, dword [esp + 0x64]
push ebp
push eax
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, edi
jne 0x100ae538
mov ecx, dword [esp + 0x60]
push 0
push ecx
push esi
call fcn.1000c5c0
mov edx, dword [esp + 0x60]
push ebp
push edx
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, edi
jne 0x100ae04a
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add edi, edi
push edi
push 0
push eax
call fcn.1002a420
mov ecx, dword [esp + 0x48]
push edi
push 0
push ecx
call fcn.1002a420
mov edx, dword [esp + 0x58]
push edi
push 0
push edx
call fcn.1002a420
mov eax, dword [esp + 0x68]
push edi
push 0
push eax
call fcn.1002a420
add esp, 0x30
test ebx, ebx
jle 0x100adcfb
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 0x100adced
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 0x100adc87
mov ebp, dword [esp + 0x48]
mov ebx, dword [ebp + ecx*4 + 4]
sub ebx, dword [ebp + ecx*4]
mov ebp, dword [esp + 0x8c]
jmp 0x100adc8e
mov ebx, dword [esp + 0x84]
test ebx, ebx
jle 0x100adcdb
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 0x100adca0
mov ecx, dword [esp + 0x24]
inc ecx
add eax, 2
cmp ecx, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
jl 0x100adc60
sub dword [esp + 0x80], 1
jne 0x100adc30
cmp dword [esp + 0x14], 0
jle 0x100adfeb
mov ebp, dword [esp + 0x38]
fld qword [0x10147068]
mov eax, dword [esp + 0x44]
fld qword [0x10147070]
mov esi, dword [esp + 0x3c]
fld qword [0x101470f8]
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 0x100add54
mov eax, dword [esp + 0x80]
movzx eax, word [eax + ebp]
xor ebx, ebx
mov dword [esp + 0x24], eax
cmp eax, ebx
je 0x100addec
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.1012b4f0
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 [0x10147060]
fsubp st(3)
fxch st(2)
call fcn.1012b4f0
fxch st(1)
fmul qword [0x10147058]
mov ebx, eax
faddp st(1)
call fcn.1012b4f0
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x100addf4
mov dword [esp + 0x24], 0
jmp 0x100ade04
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x100ade2d
cmp ecx, 0xff
jle 0x100ade04
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x100ade0c
xor ebx, ebx
jmp 0x100ade19
cmp ebx, 0xff
jle 0x100ade19
mov ebx, 0xff
test eax, eax
jge 0x100ade21
xor eax, eax
jmp 0x100ade2d
cmp eax, 0xff
jle 0x100ade2d
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 0x100add4d
jmp 0x100adfe5
push 0
push eax
push esi
call fcn.1000c5c0
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x34]
push edi
push edx
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, edi
jne 0x100ae02d
mov eax, dword [esp + 0x5c]
push 0
push eax
push esi
call fcn.1000c5c0
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x64]
push edi
push ecx
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, edi
jne 0x100ae538
mov edx, dword [esp + 0x60]
push 0
push edx
push esi
call fcn.1000c5c0
mov eax, dword [esp + 0x60]
push edi
push eax
push esi
call fcn.1000b880
add esp, 0x18
cmp eax, edi
jne 0x100ae04a
xor esi, esi
cmp dword [esp + 0x14], esi
jle 0x100adfeb
fld qword [0x10147060]
mov ebp, dword [esp + 0x2c]
fld qword [0x10147068]
fld qword [0x10147070]
cmp dword [esp + 0x34], 0
je 0x100adef4
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.1012b4f0
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.1012b4f0
fxch st(1)
fmul qword [0x10147058]
mov dword [esp + 0x24], eax
faddp st(1)
call fcn.1012b4f0
test ebx, ebx
jge 0x100adf7f
xor ebx, ebx
jmp 0x100adf8c
cmp ebx, 0xff
jle 0x100adf8c
mov ebx, 0xff
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x100adf9e
mov dword [esp + 0x24], 0
jmp 0x100adfae
cmp ecx, 0xff
jle 0x100adfae
mov dword [esp + 0x24], 0xff
test eax, eax
jge 0x100adfb6
xor eax, eax
jmp 0x100adfc2
cmp eax, 0xff
jle 0x100adfc2
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 0x100adee2
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 0x100adb10
mov edi, dword [esp + 0xac]
mov ebp, dword [esp + 0x4c]
jmp 0x100adaba
mov eax, dword [esp + 0x10]
push eax
call fcn.10009d90
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 0x100ae032
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.10009ed0
add esp, 8
mov dword [esp + 0x28], eax
test eax, eax
jne 0x100ae098
mov eax, dword [esp + 0x10]
push eax
call fcn.10009d90
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 0x100adaba
lea esp, [esp]
cmp dword [esp + 0x34], 0
je 0x100ae0cc
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 0x100ae0d0
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.1000b880
add esp, 0xc
cmp eax, esi
jb 0x100ae538
cmp dword [esp + 0xcc], 0
je 0x100ae3ac
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
add edi, edi
push edi
push 0
push ecx
call fcn.1002a420
mov edx, dword [esp + 0x48]
push edi
push 0
push edx
call fcn.1002a420
mov eax, dword [esp + 0x58]
push edi
push 0
push eax
call fcn.1002a420
mov ecx, dword [esp + 0x68]
push edi
push 0
push ecx
call fcn.1002a420
add esp, 0x30
test ebx, ebx
jle 0x100ae24e
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 0x100ae240
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 0x100ae190
cmp dword [esp + 0x34], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x80], ebx
je 0x100ae1b6
mov edi, dword [esp + 0x48]
mov ebx, dword [edi + ebp*4 + 4]
sub ebx, dword [edi + ebp*4]
mov edi, dword [esp + 0x8c]
jmp 0x100ae1bd
mov ebx, dword [esp + 0x80]
test ebx, ebx
jle 0x100ae22e
and ebp, 1
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x80], ebp
jmp 0x100ae1e0
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 0x100ae2a0
add dword [esp + 0x1c], 3
add edi, 4
sub dword [esp + 0x8c], 1
jne 0x100ae1e0
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 0x100ae190
sub dword [esp + 0x84], 1
jne 0x100ae155
cmp dword [esp + 0x14], 0
jle 0x100ae50c
mov ebp, dword [esp + 0x38]
fld qword [0x10147068]
mov eax, dword [esp + 0x44]
fld qword [0x10147070]
mov esi, dword [esp + 0x3c]
fld qword [0x101470f8]
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 0x100ae2b0
inc dword [esp + 0x1c]
jmp 0x100ae219
mov eax, dword [esp + 0x80]
movzx eax, word [eax + ebp]
xor ebx, ebx
mov dword [esp + 0x70], eax
cmp eax, ebx
je 0x100ae348
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.1012b4f0
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 [0x10147060]
fsubp st(3)
fxch st(2)
call fcn.1012b4f0
fxch st(1)
fmul qword [0x10147058]
mov ebx, eax
faddp st(1)
call fcn.1012b4f0
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x100ae350
mov dword [esp + 0x24], 0
jmp 0x100ae360
mov dword [esp + 0x24], ebx
xor eax, eax
jmp 0x100ae389
cmp ecx, 0xff
jle 0x100ae360
mov dword [esp + 0x24], 0xff
test ebx, ebx
jge 0x100ae368
xor ebx, ebx
jmp 0x100ae375
cmp ebx, 0xff
jle 0x100ae375
mov ebx, 0xff
test eax, eax
jge 0x100ae37d
xor eax, eax
jmp 0x100ae389
cmp eax, 0xff
jle 0x100ae389
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 0x100ae2a9
jmp 0x100ae506
xor ebp, ebp
cmp dword [esp + 0x14], ebp
mov dword [esp + 0x1c], ebp
lea esi, [ebp + 2]
jle 0x100ae50c
fld qword [0x10147060]
mov edi, dword [esp + 0x2c]
fld qword [0x10147068]
fld qword [0x10147070]
cmp dword [esp + 0x34], 0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x84], ecx
je 0x100ae3f9
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.1012b4f0
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.1012b4f0
fxch st(1)
fmul qword [0x10147058]
mov dword [esp + 0x24], eax
faddp st(1)
call fcn.1012b4f0
test ebx, ebx
jge 0x100ae47d
xor ebx, ebx
jmp 0x100ae48a
cmp ebx, 0xff
jle 0x100ae48a
mov ebx, 0xff
mov ecx, dword [esp + 0x24]
test ecx, ecx
jge 0x100ae49c
mov dword [esp + 0x24], 0
jmp 0x100ae4ac
cmp ecx, 0xff
jle 0x100ae4ac
mov dword [esp + 0x24], 0xff
test eax, eax
jge 0x100ae4b4
xor eax, eax
jmp 0x100ae4c0
cmp eax, 0xff
jle 0x100ae4c0
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 0x100ae4e9
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x84]
lea ecx, [ecx + edx*4 - 1]
mov dword [esp + 0x1c], ecx
jmp 0x100ae4ed
inc dword [esp + 0x1c]
test eax, eax
je 0x100ae4fb
mov edx, dword [esp + 0x84]
lea esi, [esi + edx*4]
inc ebp
cmp ebp, dword [esp + 0x14]
jl 0x100ae3d5
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 0x100ae0b0
mov edi, dword [esp + 0xac]
jmp 0x100adaba
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x100ae032
mov ecx, dword [edi]
movzx edi, ax
mov eax, dword [ecx + 4]
cdq
idiv edi
mov ecx, eax
cmp ecx, 1
jge 0x100ae559
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 0x100ae599
lea ebx, [edi + edi*2 + 3]
and ebx, 0xfffffffc
mov dword [esp + 0x30], ebx
jmp 0x100ae5a2
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.10009ed0
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x100ae088
mov ecx, dword [esp + 0xc0]
imul ebx, ebp
mov edx, dword [ecx]
lea eax, [ebx + 0x80]
push eax
push edx
call fcn.10009ed0
mov ecx, dword [esp + 0xc0]
mov dword [ecx], eax
xor ecx, ecx
add esp, 8
cmp eax, ecx
je 0x100ae088
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 0x100ae640
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 0x100ae6f7
lea ecx, [eax + 1]
mov dword [esp + 0x8c], ecx
lea edx, [esi + 1]
mov dword [esp + 0x84], ebp
test edi, edi
jle 0x100ae6cc
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 0x100ae6a0
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 0x100ae691
mov ecx, dword [esp + 0xa4]
fld qword [0x101470a0]
fstp qword [ecx + 0x40c]
xor eax, eax
fld qword [0x10147098]
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 0x100ae740
mov edx, eax
shl edx, 4
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, 0x100
jl 0x100ae740
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