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

Disassembly:
jmp 0x10150360
sub esp, 0x70
push esi
push edi
mov edi, dword [esp + 0x8c]
mov esi, 1
mov dword [esp + 0x38], 0
cmp dword [edi + 0x4d4], esi
jne 0x10151360
cmp dword [edi + 0x4e0], 8
jne 0x10151360
cmp word [edi + 0x464], 0
je 0x10151360
cmp word [edi + 0x476], 0
je 0x10151360
cmp word [edi + 0x488], 0
je 0x10151360
cmp dword [esp + 0x90], 0
je 0x10151358
cmp dword [esp + 0x94], 0
je 0x10151358
cmp dword [esp + 0xac], 0
mov eax, dword [edi + 0x4ec]
mov ecx, eax
mov dword [esp + 0x40], eax
jne 0x101503f8
add ecx, 3
and ecx, 0xfffffffc
mov dword [esp + 0x40], ecx
push ebx
mov ebx, dword [edi + 0x4e8]
push ebp
mov ebp, eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x44], ebp
test ebx, ebx
je 0x1015134b
test ebp, ebp
je 0x1015134b
mov ax, word [esp + 0x8c]
test ax, ax
jbe 0x10150494
movzx ecx, ax
cmp ecx, ebp
jge 0x10150494
mov ax, word [esp + 0x90]
test ax, ax
jbe 0x10150494
movzx eax, ax
cmp eax, ebx
jge 0x10150494
fild dword [esp + 0x44]
mov ebp, ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x30], eax
fidiv dword [esp + 0x1c]
mov dword [esp + 0x40], esi
fst qword [esp + 0x78]
fild dword [esp + 0x38]
fidiv dword [esp + 0x30]
fst qword [esp + 0x70]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x10150484
fstp st(0)
call fcn.100dcc82
mov esi, eax
inc esi
mov dword [esp + 0x2c], esi
jmp 0x10150504
fstp st(1)
call fcn.100dcc82
mov esi, eax
inc esi
mov dword [esp + 0x2c], esi
jmp 0x10150504
mov ecx, dword [esp + 0x88]
test ecx, ecx
jbe 0x101504d4
mov eax, ebp
imul eax, ebx
xor edx, edx
div ecx
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
test eax, eax
jge 0x101504ba
fadd qword [0x102cf268]
call fcn.100dcf8e
call fcn.100dcc82
mov esi, eax
cmp esi, 1
mov dword [esp + 0x2c], esi
jge 0x101504da
mov esi, 1
mov dword [esp + 0x2c], esi
jmp 0x101504dc
jne 0x101504e7
mov dword [esp + 0xbc], 0
mov eax, esi
imul eax, esi
mov dword [esp + 0x78], eax
mov eax, ebp
cdq
idiv esi
mov ebp, eax
mov dword [esp + 0x1c], eax
mov eax, ebx
cdq
idiv esi
mov dword [esp + 0x30], eax
cmp dword [esp + 0xc0], 0
je 0x10150517
lea eax, [ebp + ebp*2 + 3]
and eax, 0xfffffffc
jmp 0x1015051b
lea eax, [ebp + ebp*2]
imul esi, dword [esp + 0x48]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb0]
cmp dword [eax], 0
jne 0x10150545
push eax
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x1015060a
lea ecx, [esp + 0x14]
push ecx
call fcn.100dbb61
movzx eax, ax
add esp, 4
test ax, ax
jne 0x1015060a
mov edx, dword [esp + 0x14]
push esi
push edx
call fcn.100de77b
add esp, 8
mov dword [esp + 0x54], eax
test eax, eax
je 0x10151341
cmp dword [esp + 0xbc], 0
je 0x10150612
mov ecx, dword [esp + 0x14]
lea esi, [ebp + ebp]
push esi
push ecx
call fcn.100de77b
mov edx, dword [esp + 0x1c]
push esi
push edx
mov dword [esp + 0x4c], eax
call fcn.100de77b
mov ebx, eax
mov eax, dword [esp + 0x24]
push esi
push eax
mov dword [esp + 0x30], ebx
call fcn.100de77b
add esp, 0x18
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x4c], eax
je 0x10151341
test ebx, ebx
je 0x10151341
test eax, eax
je 0x10151341
cmp dword [esp + 0x40], 0
je 0x101506db
mov ecx, dword [esp + 0x14]
push esi
push ecx
call fcn.100de77b
add esp, 8
mov dword [esp + 0x5c], eax
test eax, eax
jne 0x10150616
mov edx, dword [esp + 0x14]
push edx
call fcn.100db8dc
add esp, 4
mov eax, 0x66
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x70
ret
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0x40], 0
je 0x101506db
mov edx, dword [esp + 0x14]
lea ecx, [ebp*4 + 4]
push ecx
push edx
call fcn.100de77b
mov edx, dword [esp + 0x1c]
mov esi, eax
mov eax, dword [esp + 0x38]
lea ecx, [eax*4 + 4]
push ecx
push edx
mov dword [esp + 0x60], esi
call fcn.100de77b
add esp, 0x10
mov dword [esp + 0x58], eax
test esi, esi
je 0x1015085c
test eax, eax
je 0x1015085c
xor esi, esi
mov dword [esp + 0x10], esi
test ebp, ebp
jle 0x10150691
fld qword [esp + 0x78]
fild dword [esp + 0x10]
fmul st(1)
call fcn.100dcc82
mov ecx, dword [esp + 0x50]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
mov dword [esp + 0x10], esi
jl 0x10150674
fstp st(0)
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
xor esi, esi
cmp dword [esp + 0x30], esi
mov dword [eax + ebp*4], edx
mov dword [esp + 0x10], esi
jle 0x101506cc
fld qword [esp + 0x70]
mov ebp, dword [esp + 0x58]
fild dword [esp + 0x10]
fmul st(1)
call fcn.100dcc82
mov dword [ebp + esi*4], eax
inc esi
cmp esi, dword [esp + 0x30]
mov dword [esp + 0x10], esi
jl 0x101506b0
fstp st(0)
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov dword [edx + eax*4], ecx
mov esi, dword [esp + 0x34]
imul esi, dword [esp + 0x30]
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x6c], esi
je 0x101506fe
mov edx, dword [esp + 0x98]
cmp dword [edx], 0
jne 0x10150728
mov ecx, dword [esp + 0xb0]
mov edx, dword [ecx]
lea eax, [esi + 0x4ac]
push eax
push edx
call fcn.100de77b
mov ecx, dword [esp + 0xa0]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x101505f8
mov eax, dword [esp + 0x98]
mov ecx, dword [eax]
mov edx, dword [esp + 0x9c]
lea eax, [ecx + esi + 0x80]
mov dword [edx], eax
test eax, eax
je 0x10151341
cmp dword [edi + 0x4e4], 0
mov ebp, 1
jl 0x10150767
mov eax, dword [edi + 0x4e4]
inc eax
mov edi, edi
add ebp, ebp
sub eax, 1
jne 0x10150760
mov ecx, dword [esp + 0x14]
lea esi, [ebp + ebp]
push esi
push ecx
call fcn.100de77b
mov edx, dword [esp + 0x1c]
push esi
push edx
mov dword [esp + 0x38], eax
call fcn.100de77b
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x24]
push esi
push eax
call fcn.100de77b
add esp, 0x18
cmp dword [esp + 0x28], 0
mov dword [esp + 0x20], eax
je 0x10151341
cmp dword [esp + 0x24], 0
je 0x10151341
test eax, eax
je 0x10151341
xor eax, eax
xor ecx, ecx
cmp word [edi + 0x468], 8
jne 0x10150866
mov esi, dword [edi + 0x46a]
mov dword [esp + 0x10], esi
cmp cx, word [edi + 0x466]
jae 0x101507f8
mov ecx, dword [esp + 0x28]
cmp eax, ebp
jge 0x101507f8
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x466]
inc eax
cmp eax, edx
jl 0x101507e2
movzx ecx, word [edi + 0x464]
mov edx, 0x10000
test cx, cx
je 0x1015080c
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x10150835
cmp eax, ebp
jge 0x101508eb
movzx si, byte [ecx + esi]
mov ebx, dword [esp + 0x28]
mov word [ebx + eax*2], si
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x10150812
cmp eax, ebp
jge 0x101508eb
mov ecx, dword [esp + 0x28]
movzx edx, word [edi + 0x464]
movzx dx, byte [edx + esi - 1]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x10150841
jmp 0x101508eb
mov ecx, dword [esp + 0x14]
push ecx
jmp 0x101505fd
cmp cx, word [edi + 0x466]
jae 0x10150889
mov ecx, dword [esp + 0x28]
cmp eax, ebp
jge 0x10150889
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x466]
inc eax
cmp eax, edx
jl 0x10150873
movzx ecx, word [edi + 0x464]
mov edx, 0x10000
test cx, cx
je 0x1015089d
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x101508c3
mov esi, dword [esp + 0x28]
cmp eax, ebp
jge 0x101508eb
mov ebx, dword [edi + 0x46a]
mov bx, word [ebx + ecx*2]
mov word [esi + eax*2], bx
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x101508a7
cmp eax, ebp
jge 0x101508eb
mov ecx, dword [esp + 0x28]
jmp 0x101508d0
movzx edx, word [edi + 0x464]
mov esi, dword [edi + 0x46a]
mov dx, word [esi + edx*2 - 2]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x101508d0
xor eax, eax
xor ecx, ecx
cmp word [edi + 0x47a], 8
jne 0x1015098e
mov esi, dword [edi + 0x47c]
mov dword [esp + 0x10], esi
cmp cx, word [edi + 0x478]
jae 0x1015092a
mov ecx, dword [esp + 0x24]
cmp eax, ebp
jge 0x1015092a
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x478]
inc eax
cmp eax, edx
jl 0x10150914
movzx ecx, word [edi + 0x476]
mov edx, 0x10000
test cx, cx
je 0x1015093e
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x10150967
cmp eax, ebp
jge 0x10150a1b
movzx si, byte [ecx + esi]
mov ebx, dword [esp + 0x24]
mov word [ebx + eax*2], si
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x10150944
cmp eax, ebp
jge 0x10150a1b
mov ecx, dword [esp + 0x24]
movzx edx, word [edi + 0x476]
movzx dx, byte [edx + esi - 1]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x10150973
jmp 0x10150a1b
cmp cx, word [edi + 0x478]
jae 0x101509b6
mov ecx, dword [esp + 0x24]
jmp 0x101509a0
cmp eax, ebp
jge 0x101509b6
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x478]
inc eax
cmp eax, edx
jl 0x101509a0
movzx ecx, word [edi + 0x476]
mov edx, 0x10000
test cx, cx
je 0x101509ca
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x101509f0
mov esi, dword [esp + 0x24]
cmp eax, ebp
jge 0x10150a1b
mov ebx, dword [edi + 0x47c]
mov bx, word [ebx + ecx*2]
mov word [esi + eax*2], bx
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x101509d4
cmp eax, ebp
jge 0x10150a1b
mov ecx, dword [esp + 0x24]
jmp 0x10150a00
movzx edx, word [edi + 0x476]
mov esi, dword [edi + 0x47c]
mov dx, word [esi + edx*2 - 2]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x10150a00
xor eax, eax
xor ecx, ecx
cmp word [edi + 0x48c], 8
jne 0x10150abe
mov esi, dword [edi + 0x48e]
mov dword [esp + 0x10], esi
cmp cx, word [edi + 0x48a]
jae 0x10150a5a
mov ecx, dword [esp + 0x20]
cmp eax, ebp
jge 0x10150a5a
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x48a]
inc eax
cmp eax, edx
jl 0x10150a44
movzx ecx, word [edi + 0x488]
mov edx, 0x10000
test cx, cx
je 0x10150a6e
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x10150a97
cmp eax, ebp
jge 0x10150b4b
movzx si, byte [ecx + esi]
mov ebx, dword [esp + 0x20]
mov word [ebx + eax*2], si
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x10150a74
cmp eax, ebp
jge 0x10150b4b
mov ecx, dword [esp + 0x20]
movzx edx, word [edi + 0x488]
movzx dx, byte [edx + esi - 1]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x10150aa3
jmp 0x10150b4b
cmp cx, word [edi + 0x48a]
jae 0x10150ae6
mov ecx, dword [esp + 0x20]
jmp 0x10150ad0
cmp eax, ebp
jge 0x10150ae6
xor edx, edx
mov word [ecx + eax*2], dx
movzx edx, word [edi + 0x48a]
inc eax
cmp eax, edx
jl 0x10150ad0
movzx ecx, word [edi + 0x488]
mov edx, 0x10000
test cx, cx
je 0x10150afa
movzx edx, cx
xor ecx, ecx
test edx, edx
jle 0x10150b20
mov esi, dword [esp + 0x20]
cmp eax, ebp
jge 0x10150b4b
mov ebx, dword [edi + 0x48e]
mov bx, word [ebx + ecx*2]
mov word [esi + eax*2], bx
mov ebx, dword [esp + 0x18]
inc ecx
inc eax
cmp ecx, edx
jl 0x10150b04
cmp eax, ebp
jge 0x10150b4b
mov ecx, dword [esp + 0x20]
jmp 0x10150b30
movzx edx, word [edi + 0x488]
mov esi, dword [edi + 0x48e]
mov dx, word [esi + edx*2 - 2]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebp
jl 0x10150b30
mov ecx, dword [esp + 0x28]
movzx eax, word [ecx]
mov edx, dword [esp + 0x20]
movzx edi, word [edx]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x24]
movzx esi, word [eax]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
test ebp, ebp
jle 0x10150bc5
mov esi, ecx
sub esi, eax
sub edx, eax
mov dword [esp + 0x60], ebp
lea ebx, [ebx]
movzx ecx, word [esi + eax]
cmp word [esp + 0x38], cx
jae 0x10150b92
movzx ecx, cx
mov dword [esp + 0x38], ecx
movzx ecx, word [eax]
cmp word [esp + 0x44], cx
jae 0x10150ba3
movzx ecx, cx
mov dword [esp + 0x44], ecx
movzx ecx, word [edx + eax]
mov edi, dword [esp + 0x10]
cmp di, cx
jae 0x10150bb7
movzx edi, cx
mov dword [esp + 0x10], edi
add eax, 2
sub dword [esp + 0x60], 1
jne 0x10150b80
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
cmp ax, si
movzx eax, ax
ja 0x10150bd4
movzx eax, si
cmp ax, di
ja 0x10150bdc
movzx eax, di
mov edx, 0xff
cmp ax, dx
jbe 0x10150cd1
movzx eax, ax
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
fdivr qword [0x102cf270]
test ebp, ebp
jle 0x10150ccf
mov ecx, dword [esp + 0x24]
fld qword [0x102ce5c0]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
sub edx, ecx
sub esi, ecx
movzx eax, word [ecx + edx]
fnstcw word [esp + 0x10]
mov dword [esp + 0x70], eax
movzx eax, word [esp + 0x10]
fild dword [esp + 0x70]
or eax, 0xc00
mov dword [esp + 0x70], eax
fmul st(2)
add ecx, 2
fadd st(1)
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
movzx eax, word [esp + 0x70]
mov word [ecx + edx - 2], ax
movzx eax, word [ecx - 2]
fldcw word [esp + 0x10]
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
fnstcw word [esp + 0x10]
fmul st(2)
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov dword [esp + 0x70], eax
fadd st(1)
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
movzx eax, word [esp + 0x70]
mov word [ecx - 2], ax
movzx eax, word [ecx + esi - 2]
fldcw word [esp + 0x10]
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
fnstcw word [esp + 0x10]
fmul st(2)
movzx eax, word [esp + 0x10]
or eax, 0xc00
sub ebp, 1
mov dword [esp + 0x70], eax
fadd st(1)
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
movzx eax, word [esp + 0x70]
mov word [ecx + esi - 2], ax
fldcw word [esp + 0x10]
jne 0x10150c19
fstp st(1)
fstp st(0)
mov ebp, dword [esp + 0x9c]
mov ecx, dword [ebp]
mov edi, dword [esp + 0x1c]
mov dword [ecx], 0x28
mov edx, dword [ebp]
mov dword [edx + 4], edi
mov eax, dword [ebp]
mov edx, dword [esp + 0x30]
mov dword [eax + 8], edx
mov ecx, dword [ebp]
mov eax, 1
mov word [ecx + 0xc], ax
mov ecx, dword [ebp]
xor esi, esi
mov eax, 0x18
mov word [ecx + 0xe], ax
mov ecx, dword [ebp]
mov dword [ecx + 0x10], esi
mov eax, dword [ebp]
mov ecx, dword [esp + 0x6c]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp]
mov dword [eax + 0x18], esi
mov ecx, dword [ebp]
mov dword [ecx + 0x1c], esi
mov eax, dword [ebp]
mov dword [eax + 0x24], esi
mov ecx, dword [ebp]
mov dword [ecx + 0x20], esi
xor eax, eax
lea esp, [esp]
mov ecx, dword [ebp]
mov byte [ecx + eax*4 + 0x2a], al
mov ecx, dword [ebp]
mov byte [ecx + eax*4 + 0x29], al
mov ecx, dword [ebp]
mov byte [ecx + eax*4 + 0x28], al
mov ecx, dword [ebp]
mov byte [ecx + eax*4 + 0x2b], 0
inc eax
cmp eax, 0x100
jl 0x10150d40
cmp dword [esp + 0xb4], esi
je 0x10150d87
mov ecx, dword [esp + 0x98]
lea eax, [edx - 1]
imul eax, dword [esp + 0x34]
add eax, dword [ecx]
mov ecx, dword [esp + 0x34]
neg ecx
jmp 0x10150d94
mov eax, dword [esp + 0x98]
mov eax, dword [eax]
mov ecx, dword [esp + 0x34]
cmp edx, esi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x10], esi
jle 0x10151117
cmp dword [esp + 0x40], esi
je 0x10150dc3
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x10]
mov ebp, dword [ecx + eax*4 + 4]
sub ebp, dword [ecx + eax*4]
mov dword [esp + 0x2c], ebp
jmp 0x10150dc7
mov ebp, dword [esp + 0x2c]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x84]
mov esi, ebp
imul esi, dword [esp + 0x48]
push esi
push edx
push eax
call fcn.100db5df
add esp, 0xc
cmp eax, esi
jne 0x1015115a
cmp dword [esp + 0xbc], 0
je 0x10151055
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x54]
lea esi, [edi + edi]
push esi
push 0
push edx
mov dword [esp + 0x44], ecx
call fcn.100dc309
push esi
push 0
push ebx
call fcn.100dc309
mov eax, dword [esp + 0x64]
push esi
push 0
push eax
call fcn.100dc309
add esp, 0x24
cmp dword [esp + 0x40], 0
je 0x10150f7c
mov ecx, dword [esp + 0x5c]
push esi
push 0
push ecx
call fcn.100dc309
add esp, 0xc
test ebp, ebp
jle 0x10150eff
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x6c], edx
xor ebp, ebp
cmp edi, ebp
mov dword [esp + 0x68], ebp
mov dword [esp + 0x64], ebp
jle 0x10150eec
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x5c]
sub edx, ebx
sub esi, ebx
mov eax, ebx
sub edi, ebx
mov ebx, dword [esp + 0x50]
mov ecx, dword [ebx + ebp*4 + 4]
sub ecx, dword [ebx + ebp*4]
test ecx, ecx
jle 0x10150ed6
mov ebp, dword [esp + 0x64]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [ecx + ebp]
mov ebx, dword [esp + 0x28]
movzx ebx, word [ebx + ecx*2]
add word [edx + eax], bx
mov ebx, dword [esp + 0x24]
movzx ebx, word [ebx + ecx*2]
add word [eax], bx
mov ebx, dword [esp + 0x20]
mov cx, word [ebx + ecx*2]
add word [esi + eax], cx
inc word [edi + eax]
inc ebp
sub dword [esp + 0x60], 1
jne 0x10150e93
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x68]
inc ebp
add eax, 2
cmp ebp, dword [esp + 0x1c]
mov dword [esp + 0x68], ebp
jl 0x10150e80
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
add dword [esp + 0x38], edx
sub dword [esp + 0x6c], 1
jne 0x10150e56
test edi, edi
jle 0x101510f3
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
sub eax, ebp
sub edi, ebp
mov dword [esp + 0x68], eax
sub ebx, ebp
mov dword [esp + 0x6c], edx
lea ecx, [ecx]
movzx esi, word [eax + ebp]
test esi, esi
je 0x10150f5d
movzx eax, word [ebp]
cdq
idiv esi
inc ecx
inc ecx
mov byte [ecx - 2], al
movzx eax, word [edi + ebp]
cdq
idiv esi
mov byte [ecx - 1], al
movzx eax, word [ebx + ebp]
cdq
idiv esi
mov byte [ecx], al
mov eax, dword [esp + 0x68]
jmp 0x10150f68
mov byte [ecx], 0
inc ecx
mov byte [ecx], 0
inc ecx
mov byte [ecx], 0
inc ecx
add ebp, 2
sub dword [esp + 0x6c], 1
jne 0x10150f30
mov ebx, dword [esp + 0x18]
jmp 0x101510ef
test ebp, ebp
jle 0x10150ff4
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x6c], eax
lea esp, [esp]
mov ebp, dword [esp + 0x2c]
xor eax, eax
xor ecx, ecx
test edi, edi
jle 0x10150fa3
mov ecx, ebp
mov eax, edi
imul ecx, edi
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
add edx, ecx
lea ecx, [ecx]
movzx ecx, byte [edx]
mov edi, dword [esp + 0x28]
movzx edi, word [edi + ecx*2]
add word [esi + eax*2], di
mov edi, dword [esp + 0x24]
movzx edi, word [edi + ecx*2]
add word [ebx + eax*2], di
mov edi, dword [esp + 0x20]
movzx edi, word [edi + ecx*2]
mov ecx, dword [esp + 0x4c]
add word [ecx + eax*2], di
inc edx
sub ebp, 1
jne 0x10150fb0
mov eax, dword [esp + 0x48]
add dword [esp + 0x38], eax
sub dword [esp + 0x6c], 1
mov edi, dword [esp + 0x1c]
jne 0x10150f90
test edi, edi
jle 0x101510f3
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
sub esi, ebx
mov ebp, ebx
sub edi, ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x6c], edx
lea ebx, [ebx]
movzx eax, word [esi + ebp]
cdq
idiv ebx
inc ecx
inc ecx
inc ecx
add ebp, 2
mov byte [ecx - 3], al
movzx eax, word [ebp - 2]
cdq
idiv ebx
mov byte [ecx - 2], al
movzx eax, word [edi + ebp - 2]
cdq
idiv ebx
sub dword [esp + 0x6c], 1
mov byte [ecx - 1], al
jne 0x10151020
mov ebx, dword [esp + 0x18]
jmp 0x101510ef
cmp dword [esp + 0x40], 0
je 0x101510b2
xor ecx, ecx
xor esi, esi
test edi, edi
jle 0x101510f3
mov eax, dword [esp + 0x44]
lea esp, [esp]
mov edx, dword [esp + 0x54]
movzx ebp, byte [esi + edx]
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + ebp*2]
mov byte [eax], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + ebp*2]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x28]
movzx edx, byte [edx + ebp*2]
inc eax
inc eax
mov byte [eax], dl
mov edx, dword [esp + 0x50]
mov edi, dword [edx + ecx*4 + 4]
sub edi, dword [edx + ecx*4]
inc ecx
add esi, edi
mov edi, dword [esp + 0x1c]
inc eax
cmp ecx, edi
jl 0x10151070
jmp 0x101510f3
test edi, edi
jle 0x101510f3
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x54]
inc eax
mov ebp, edi
movzx ecx, byte [esi]
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + ecx*2]
add esi, dword [esp + 0x2c]
mov byte [eax - 1], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + ecx*2]
mov byte [eax], dl
mov edx, dword [esp + 0x28]
mov cl, byte [edx + ecx*2]
mov byte [eax + 1], cl
add eax, 3
sub ebp, 1
jne 0x101510c1
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x70]
add dword [esp + 0x44], edx
inc eax
xor esi, esi
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
jl 0x10150da8
mov ebp, dword [esp + 0x9c]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.100db8dc
add esp, 4
cmp dword [esp + 0xa8], esi
je 0x10151337
mov esi, dword [esp + 0xac]
test esi, esi
je 0x10151337
mov ax, word [esp + 0xa0]
test ax, ax
jne 0x10151174
pop ebp
pop ebx
pop edi
mov eax, 1
pop esi
add esp, 0x70
ret
mov eax, dword [esp + 0x14]
push eax
call fcn.100db8dc
add esp, 4
pop ebp
pop ebx
pop edi
mov eax, 0xca
pop esi
add esp, 0x70
ret
mov edx, dword [ebp]
movzx ecx, ax
mov eax, dword [edx + 4]
cdq
idiv ecx
mov ecx, eax
cmp ecx, 1
jge 0x1015118c
mov ecx, 1
mov eax, dword [esp + 0x30]
lea edx, [ecx + ecx*2]
mov dword [esp + 0x78], edx
cdq
idiv ecx
mov ebp, eax
mov eax, edi
cdq
idiv ecx
mov ebx, eax
mov eax, dword [esp + 0x34]
imul eax, ecx
cmp dword [esp + 0xc0], 0
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x70], eax
je 0x101511c5
lea eax, [ebx + ebx*2 + 3]
and eax, 0xfffffffc
jmp 0x101511c8
lea eax, [ebx + ebx*2]
mov ecx, dword [esp + 0xb0]
mov edx, dword [ecx]
push 0x42c
push edx
mov dword [esp + 0x3c], eax
call fcn.100de77b
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x10150605
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0xb0]
imul edi, ebp
mov edx, dword [ecx]
lea eax, [edi + 0x80]
push eax
push edx
call fcn.100de77b
mov ecx, dword [esp + 0xb0]
add esp, 8
mov dword [ecx], eax
test eax, eax
je 0x10150605
mov edx, dword [esi]
mov dword [edx], 0x28
mov eax, dword [esi]
mov dword [eax + 4], ebx
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], edi
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
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 0x10151268
cmp ebp, ecx
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov edi, dword [eax]
mov edx, dword [edx]
jle 0x101512e0
inc edx
inc edi
test ebx, ebx
jle 0x101512d3
mov ecx, edi
mov eax, edx
mov esi, ebx
lea ebx, [ebx]
movzx ebx, byte [eax - 1]
mov byte [ecx - 1], bl
movzx ebx, byte [eax]
mov byte [ecx], bl
movzx ebx, byte [eax + 1]
add eax, dword [esp + 0x78]
mov byte [ecx + 1], bl
add ecx, 3
sub esi, 1
jne 0x101512b0
mov ebx, dword [esp + 0x1c]
add edi, dword [esp + 0x34]
add edx, dword [esp + 0x70]
sub ebp, 1
jne 0x101512a0
mov ecx, dword [esp + 0x94]
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 0x10151324
pop ebp
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x70
ret
mov eax, dword [esp + 0x14]
push eax
jmp 0x101505fd
pop ebp
pop ebx
pop edi
mov eax, 2
pop esi
add esp, 0x70
ret
pop edi
mov eax, esi
pop esi
add esp, 0x70
ret
pop edi
mov eax, 2
pop esi
add esp, 0x70
ret