Function at 0x551610
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57a86f
mov eax, dword fs:[0]
push eax
sub esp, 0x1c8
mov eax, dword [0x5d52e0]
xor eax, ebp
mov dword [ebp - 0x18], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x11c], ecx
mov dword [ebp - 0x134], eax
xor eax, eax
mov ecx, 0x557f90
mov edx, 1
mov dword [ebp - 0x1a0], eax
mov dword [ebp - 0x130], 0x5dd9b8
mov byte [ebp - 0x111], dl
mov byte [ebp - 0x101], al
mov dword [ebp - 4], eax
test ecx, ecx
je 0x5516cb
mov ecx, 9
lea esi, [ebp - 0x16c]
mov edi, 0x5d6a14
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x16c], eax
mov dword [ebp - 0x168], eax
mov byte [ebp - 0x164], al
mov dword [ebp - 0x160], eax
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], 0xb
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], eax
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
mov esi, 0x4b00
mov dword [ebp - 0x118], eax
xor ecx, ecx
lea ebx, [ebx]
cmp ecx, dword [ebp + 0x10]
jge 0x551719
lea edx, [ecx + ecx*8]
shl edx, 4
add edx, dword [ebp - 0x134]
mov eax, dword [edx + 0x14]
cmp esi, eax
jl 0x5516fa
mov esi, eax
cmp dword [ebp - 0x118], eax
jg 0x551708
mov dword [ebp - 0x118], eax
mov edx, dword [edx + 4]
cmp ebx, edx
jg 0x551711
mov ebx, edx
inc ecx
mov edx, 1
jmp 0x5516e0
mov edi, dword [ebp - 0x118]
cmp edi, 0x4b
jge 0x551729
mov edi, 0x4b
lea eax, [ebx - 1]
mov ecx, 3
mov esi, 8
mov dword [ebp - 0x108], edi
mov dword [ebp - 0xf8], ecx
mov dword [ebp - 0xfc], esi
cmp eax, 0x2f
ja case.0x551754.2
movzx eax, byte [eax + 0x5526a0]
jmp dword [eax*4 + 0x552688]
mov dword [ebp - 0xf8], edx
mov dword [ebp - 0xfc], edx
jmp case.0x551754.2
mov dword [ebp - 0xf8], edx
mov dword [ebp - 0xfc], esi
jmp case.0x551754.2
mov dword [ebp - 0xf8], edx
jmp 0x551793
mov dword [ebp - 0xf8], ecx
mov dword [ebp - 0xfc], esi
jmp case.0x551754.2
mov dword [ebp - 0xf8], ecx
mov dword [ebp - 0xfc], 0x10
mov ecx, dword [ebp + 0x14]
imul ecx, edi
mov eax, 0x1b4e81b5
imul ecx
mov ecx, dword [ebp + 0x18]
imul ecx, edi
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov eax, 0x1b4e81b5
imul ecx
mov ecx, dword [ebp + 0x1c]
imul ecx, edi
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x1bc], eax
mov eax, 0x1b4e81b5
imul ecx
mov ecx, dword [ebp + 0x20]
imul ecx, edi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
mov eax, 0x1b4e81b5
imul ecx
mov ecx, dword [ebp + 8]
sar edx, 6
push ecx
mov edi, edx
push 2
shr edi, 0x1f
push 0
mov dword [ebp - 0x1c0], ebx
add edi, edx
call fcn.0054edf0
test al, al
jne 0x551831
push 0x5c77e8
lea edx, [ebp - 0x1a8]
push edx
mov dword [ebp - 0x1a8], 0xa40
call fcn.005039bf
lea eax, [ebp - 0x120]
push eax
mov dword [ebp - 0x120], 0
call dword [sym.imp.SUCMLIB.dll_Ordinal_80]
xor eax, eax
cmp dword [ebp + 8], 0x9fbf1
jne 0x551858
mov eax, 1
mov ecx, dword [0x5dd554]
test ecx, ecx
je 0x551875
mov edx, dword [ebp - 0x120]
mov eax, dword [eax*4 + 0x5dd9a0]
push 1
push edx
push eax
call ecx
mov ecx, dword [ebp - 0x120]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
push eax
lea ecx, [ebp - 0x148]
push ecx
call fcn.0052c970
add esp, 8
mov edx, dword [ebp - 0x11c]
mov byte [ebp - 4], 1
mov eax, dword [edx]
mov ecx, dword [eax - 0x10]
sub eax, 0x10
mov dword [ebp - 0x100], eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
mov edx, dword [ebp - 0x100]
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jl 0x5518d1
cmp eax, dword [edx]
jne 0x5518d1
mov eax, edx
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x551935
mov ecx, dword [ebp - 0x100]
mov ecx, dword [ecx + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov dword [ebp - 0x10c], eax
test eax, eax
jne 0x5518f4
call fcn.00401ae0
mov eax, dword [ebp - 0x100]
mov edx, dword [eax + 4]
mov ecx, dword [ebp - 0x10c]
mov dword [ecx + 4], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0x11c], edx
lea edx, [edx + edx + 2]
push edx
add eax, 0x10
push eax
mov eax, dword [ebp - 0x11c]
lea edx, [eax + eax + 2]
push edx
add ecx, 0x10
push ecx
call fcn.004ffad4
mov eax, dword [ebp - 0x10c]
add esp, 0x10
add eax, 0x10
mov dword [ebp - 0x110], eax
mov byte [ebp - 4], 2
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x104
or eax, ecx
jge 0x551966
push 0x104
lea ecx, [ebp - 0x110]
call fcn.004019b0
mov eax, dword [ebp - 0x110]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveExtensionW]
mov ecx, dword [ebp - 0x110]
mov eax, dword [ecx - 8]
push eax
push ecx
call fcn.004ff818
add esp, 8
test eax, eax
js 0x552621
mov ecx, dword [ebp - 0x110]
cmp eax, dword [ecx - 8]
jg 0x552621
mov dword [ecx - 0xc], eax
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [ebp - 0x148]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.00401790
mov ecx, dword [ebp - 0x120]
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
mov ecx, dword [ebp - 0x120]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x54]
push 0x10ed
call eax
mov ecx, dword [ebp - 0x120]
push ecx
call dword [0x5dd488]
test al, al
jne 0x551a15
lea edx, [ebp - 0x120]
push edx
call dword [sym.imp.SUCMLIB.dll_Ordinal_82]
push 0x5c77e8
lea eax, [ebp - 0x190]
push eax
mov dword [ebp - 0x190], 0xa56
call fcn.005039bf
lea ecx, [ebp - 0x120]
push ecx
call dword [sym.imp.SUCMLIB.dll_Ordinal_82]
mov byte [ebp - 0x101], 1
call dword [0x5dd48c]
test al, al
jne 0x551a4e
push 0x5c77e8
lea edx, [ebp - 0x1b0]
push edx
mov dword [ebp - 0x1b0], 0xa62
call fcn.005039bf
lea eax, [ebp - 0x12c]
push eax
mov dword [ebp - 0x12c], 0
call dword [sym.imp.SUCMLIB.dll_Ordinal_73]
fild dword [ebp - 0x108]
mov ecx, dword [ebp - 0xf8]
mov edx, dword [ebp - 0xfc]
sub edi, dword [ebp - 0x1bc]
fst qword [ebp - 0x17c]
mov dword [ebp - 0x180], ecx
fstp qword [ebp - 0x174]
mov ecx, dword [ebp - 0x12c]
mov dword [ebp - 0x184], edx
sub esi, ebx
mov dword [ebp - 0x18c], esi
mov dword [ebp - 0x188], edi
mov eax, dword [ecx]
mov eax, dword [eax + 0x18]
lea edx, [ebp - 0x18c]
push edx
call eax
mov ecx, dword [ebp - 0x12c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x110]
mov edx, dword [edx + 0x20]
push eax
call edx
mov eax, dword [ebp - 0x12c]
push eax
call dword [0x5dd494]
test al, al
jne 0x551b04
lea ecx, [ebp - 0x12c]
push ecx
call dword [sym.imp.SUCMLIB.dll_Ordinal_76]
push 0x5c77e8
lea edx, [ebp - 0x19c]
push edx
mov dword [ebp - 0x19c], 0xa77
call fcn.005039bf
lea eax, [ebp - 0x12c]
push eax
call dword [sym.imp.SUCMLIB.dll_Ordinal_76]
mov ecx, dword [ebp - 0x184]
mov edx, dword [ebp - 0x180]
mov edi, ecx
imul edi, edx
xor esi, esi
dec edi
xor eax, eax
mov dword [ebp - 0x144], esi
cmp edi, 0x2f
ja case.0x551b39.2
movzx edi, byte [edi + 0x5526dc]
jmp dword [edi*4 + 0x5526d0]
mov esi, dword [ebp - 0x18c]
add esi, 7
shr esi, 3
jmp 0x551b63
mov esi, dword [ebp - 0x18c]
imul esi, ecx
imul esi, edx
shr esi, 3
add esi, 3
and esi, 0xfffffffc
mov dword [ebp - 0x144], esi
xor eax, eax
mov dword [ebp - 0x1c8], eax
test eax, eax
ja 0x551b97
jb 0x551b7c
cmp esi, 3
jae 0x551b97
push 0x5c77e8
lea ecx, [ebp - 0x1ac]
push ecx
mov dword [ebp - 0x1ac], 0xa9a
call fcn.005039bf
push esi
call fcn.0040c6f7
add esp, 4
xor edi, edi
mov dword [ebp - 0xfc], eax
xor ebx, ebx
mov dword [ebp - 0xf8], ebx
cmp ebx, dword [ebp + 0x10]
jge 0x551cb7
lea ecx, [ebx + ebx*8]
shl ecx, 4
add ecx, dword [ebp - 0x134]
mov eax, dword [ecx + 0xc]
fld qword [ecx + 0x78]
imul eax, dword [ecx + 8]
fmul qword [ecx + 0x58]
fld qword [ecx + 0x70]
fmul qword [ecx + 0x60]
fsubp st(1)
mov edi, dword [ecx + 0x2c]
fstp qword [ebp + ebx*8 - 0xd4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 0x24]
sar eax, 3
add eax, 3
and eax, 0xfffffffc
mov dword [ebp + ebx*4 - 0x28], eax
mov eax, edx
cmp edx, edi
jg 0x551c02
mov eax, edi
mov ebx, dword [ecx + 0x34]
cmp eax, ebx
jg 0x551c0b
mov eax, ebx
cmp edx, edi
jge 0x551c17
mov dword [ebp - 0x10c], edx
jmp 0x551c1f
mov edx, edi
mov dword [ebp - 0x10c], edi
cmp edx, ebx
jl 0x551c29
mov dword [ebp - 0x10c], ebx
mov edx, dword [ecx + 0x28]
mov edi, dword [ecx + 0x30]
cmp edx, edi
jle 0x551c35
mov edi, edx
mov ebx, dword [ecx + 0x38]
cmp edi, ebx
jg 0x551c3e
mov edi, ebx
mov ebx, dword [ecx + 0x30]
mov dword [ebp - 0x100], edx
cmp edx, ebx
jl 0x551c51
mov dword [ebp - 0x100], ebx
mov edx, dword [ecx + 0x38]
cmp dword [ebp - 0x100], edx
jl 0x551c62
mov dword [ebp - 0x100], edx
sub eax, dword [ebp - 0x10c]
mov ecx, dword [ecx + 0x14]
imul eax, ecx
sub edi, dword [ebp - 0x100]
mov ebx, dword [ebp - 0xf8]
mov edx, eax
imul edi, ecx
mov eax, 0x1b4e81b5
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp + ebx*4 - 0xb4], eax
mov eax, 0x1b4e81b5
imul edi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [ebp + ebx*4 - 0xa4], ecx
inc ebx
xor edi, edi
jmp 0x551baa
xor ebx, ebx
mov dword [ebp - 0x11c], ebx
cmp ebx, dword [ebp - 0x188]
jae 0x552207
mov edx, dword [ebp - 0xfc]
push esi
push edi
push edx
call fcn.00503ac0
fld qword [0x5ae0d0]
fld qword [0x5ae168]
add esp, 0xc
xor ecx, ecx
jmp 0x551cee
fxch st(1)
cmp ecx, dword [ebp + 0x10]
jge 0x551dee
mov edx, dword [ebp - 0x1c0]
lea eax, [ecx + ecx*8]
shl eax, 4
add eax, dword [ebp - 0x134]
fild dword [eax + 0x14]
fld qword [eax + 0x60]
fmul qword [eax + 0x80]
fld qword [eax + 0x78]
fmul qword [eax + 0x68]
fsubp st(1)
fmul st(1)
fdivrp st(2)
fild dword [ebp - 0x1c0]
test edx, edx
jns 0x551d31
fadd qword [0x5ae160]
fld st(0)
mov edx, ebx
fadd st(4)
mov dword [ebp - 0x128], edx
fild dword [ebp - 0x128]
test edx, edx
jns 0x551d4d
fadd qword [0x5ae160]
mov edx, dword [ebp - 0x1bc]
faddp st(5)
fild dword [ebp - 0x1bc]
test edx, edx
jns 0x551d65
fadd qword [0x5ae160]
faddp st(5)
inc ecx
fld st(4)
fmul qword [eax + 0x60]
fld qword [eax + 0x78]
fmul st(2)
fsub st(1)
fadd st(5)
fst qword [ebp + ecx*8 - 0x7c]
fxch st(3)
fadd qword [0x5ae158]
fld qword [eax + 0x78]
fmul st(1)
fsubrp st(2)
fxch st(1)
faddp st(5)
fxch st(4)
fsubrp st(2)
fxch st(1)
fstp qword [ebp + ecx*8 - 0xfc]
fld qword [eax + 0x70]
fmul qword [eax + 0x68]
fld qword [eax + 0x58]
fmul qword [eax + 0x80]
fsubp st(1)
fmulp st(2)
fld qword [0x5ae168]
fdiv st(2), st(0)
fld qword [eax + 0x58]
fmulp st(5)
fld qword [eax + 0x70]
fmulp st(2)
fld st(4)
fsubrp st(2)
fxch st(1)
fadd st(2)
fst qword [ebp + ecx*8 - 0x9c]
fld qword [eax + 0x70]
fmulp st(4)
fxch st(4)
fsubrp st(3)
fxch st(2)
faddp st(1)
fsubrp st(2)
fxch st(1)
fstp qword [ebp + ecx*8 - 0x5c]
fld qword [0x5ae0d0]
jmp 0x551cec
fstp st(1)
xor eax, eax
fstp st(0)
mov dword [ebp - 0x128], eax
cmp eax, dword [ebp - 0x18c]
jae 0x5521b3
mov edi, 0xffff
mov esi, edi
mov edx, esi
xor ebx, ebx
mov dword [ebp - 0x100], edi
mov dword [ebp - 0x10c], edx
mov dword [ebp - 0x138], SysReAllocString
mov dword [ebp - 0x108], ebx
lea ecx, [ecx]
cmp ebx, dword [ebp + 0x10]
jge 0x552083
fld qword [ebp + ebx*8 - 0x74]
lea edi, [ebp + ebx*8 - 0xd4]
fdiv qword [edi]
call fcn.00505d50
fld qword [ebp + ebx*8 - 0x94]
fdiv qword [edi]
mov dword [ebp - 0xf8], eax
call fcn.00505d50
cmp dword [ebp - 0xf8], 0
jl case.0x551eda.2
mov ecx, dword [ebp - 0xf8]
mov edx, dword [ebp - 0x108]
cmp ecx, dword [ebp + edx*4 - 0xb4]
jge case.0x551eda.2
test eax, eax
js case.0x551eda.2
mov ecx, edx
cmp eax, dword [ebp + ecx*4 - 0xa4]
jge case.0x551eda.2
lea edi, [ecx + ecx*8]
shl edi, 4
add edi, dword [ebp - 0x134]
mov ecx, dword [edi + 0x88]
cmp dword [ebp - 0x138], ecx
jg case.0x551eda.2
mov ebx, dword [edi + 0x10]
sub ebx, eax
mov eax, dword [edi + 8]
dec eax
dec ebx
mov dword [ebp - 0x138], ecx
cmp eax, 0x2f
ja case.0x551eda.2
movzx edx, byte [eax + 0x552728]
jmp dword [edx*4 + 0x55270c]
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0xf8]
add eax, 7
cdq
and edx, 7
lea esi, [edx + eax]
sar esi, 3
and ecx, reloc.OLEAUT32.dll_VariantInit
jns 0x551f04
dec ecx
or ecx, 0xfffffff8
inc ecx
mov al, 0x80
imul esi, ebx
add esi, dword [edi + 0x20]
shr al, cl
mov byte [ebp - 0x121], al
mov eax, dword [ebp - 0xf8]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov al, byte [esi + eax]
and al, byte [ebp - 0x121]
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 0xfe01
movzx eax, cx
mov edx, eax
mov dword [ebp - 0x100], edx
mov esi, eax
mov dword [ebp - 0x10c], eax
jmp case.0x551eda.2
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x28]
mov eax, dword [ebp - 0xf8]
imul edx, ebx
add edx, dword [edi + 0x20]
movzx eax, byte [edx + eax]
shl ax, 8
movzx ecx, ax
movzx esi, ax
movzx edx, ax
jmp 0x552030
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + eax*4 - 0x28]
mov edx, dword [edi + 0x20]
imul ecx, ebx
add ecx, dword [ebp - 0xf8]
movzx eax, word [edx + ecx*2]
mov ecx, eax
mov esi, eax
mov edx, eax
jmp 0x552030
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0xf8]
imul ecx, ebx
add ecx, dword [edi + 0x20]
lea edx, [eax + eax*2]
lea eax, [ecx + edx]
movzx ecx, byte [eax + 2]
shl cx, 8
movzx edx, cx
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x100], edx
movzx edx, byte [eax]
shl cx, 8
shl dx, 8
movzx eax, dx
movzx esi, cx
mov dword [ebp - 0x10c], eax
jmp case.0x551eda.2
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x28]
mov eax, dword [ebp - 0xf8]
imul edx, ebx
add edx, dword [edi + 0x20]
lea eax, [edx + eax*4]
jmp 0x551fbe
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp + ecx*4 - 0x28]
mov eax, dword [ebp - 0xf8]
imul edx, ebx
mov edi, dword [edi + 0x20]
lea eax, [eax + eax*2]
add eax, edx
movzx ecx, word [edi + eax*2]
movzx esi, word [edi + eax*2 + 2]
movzx edx, word [edi + eax*2 + 4]
mov dword [ebp - 0x100], ecx
mov dword [ebp - 0x10c], edx
mov eax, dword [ebp - 0x108]
fld qword [ebp + eax*8 - 0xf4]
mov edx, dword [ebp - 0x10c]
fadd qword [ebp + eax*8 - 0x74]
mov edi, dword [ebp - 0x100]
inc eax
mov dword [ebp - 0x108], eax
fstp qword [ebp + eax*8 - 0x7c]
mov ebx, eax
fld qword [ebp + eax*8 - 0x5c]
fadd qword [ebp + eax*8 - 0x9c]
fstp qword [ebp + eax*8 - 0x9c]
mov eax, dword [ebp - 0x128]
jmp 0x551e30
mov ecx, dword [ebp - 0x184]
imul ecx, dword [ebp - 0x180]
dec ecx
cmp ecx, 0x2f
ja case.0x5520a1.2
movzx ecx, byte [ecx + 0x552774]
jmp dword [ecx*4 + 0x552758]
mov ebx, dword [ebp - 0x11c]
mov edi, eax
shr edi, 3
mov dx, si
mov esi, dword [ebp - 0x144]
neg dx
sbb dl, dl
mov cl, al
and cl, 7
and dl, 0x80
shr dl, cl
mov ecx, dword [ebp - 0xfc]
inc eax
or byte [edi + ecx], dl
xor edi, edi
jmp 0x551df4
mov edx, dword [ebp - 0xfc]
mov ebx, dword [ebp - 0x11c]
mov ecx, esi
mov esi, dword [ebp - 0x144]
shr ecx, 8
mov byte [eax + edx], cl
inc eax
xor edi, edi
jmp 0x551df4
mov ecx, dword [ebp - 0xfc]
mov ebx, dword [ebp - 0x11c]
mov word [ecx + eax*2], si
mov esi, dword [ebp - 0x144]
inc eax
xor edi, edi
jmp 0x551df4
mov ecx, dword [ebp - 0xfc]
lea ecx, [ecx + eax*2]
mov ebx, edi
shr ebx, 8
mov byte [ecx + eax], bl
mov ebx, esi
mov esi, dword [ebp - 0x144]
shr ebx, 8
shr edx, 8
mov byte [ecx + eax + 1], bl
mov ebx, dword [ebp - 0x11c]
mov byte [ecx + eax + 2], dl
inc eax
xor edi, edi
jmp 0x551df4
mov ecx, dword [ebp - 0xfc]
mov ebx, edi
shr ebx, 8
mov byte [ecx + eax*4], bl
mov ebx, esi
mov esi, dword [ebp - 0x144]
shr ebx, 8
shr edx, 8
mov byte [ecx + eax*4 + 1], bl
mov ebx, dword [ebp - 0x11c]
mov byte [ecx + eax*4 + 2], dl
mov byte [ecx + eax*4 + 3], 0xff
inc eax
xor edi, edi
jmp 0x551df4
mov ebx, dword [ebp - 0xfc]
lea ecx, [eax + eax*2]
lea ecx, [ebx + ecx*2]
mov word [ecx], di
mov word [ecx + 2], si
mov word [ecx + 4], dx
mov esi, dword [ebp - 0x144]
mov ebx, dword [ebp - 0x11c]
inc eax
xor edi, edi
jmp 0x551df4
mov edx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0x1c8]
push edx
push eax
push esi
xor eax, eax
push eax
push esi
mov eax, 1
push eax
push ebx
call dword [0x5dd4b0]
test al, al
jne 0x552201
mov ecx, dword [ebp - 0xfc]
push ecx
call fcn.0040c6ec
add esp, 4
push 0x5c77e8
lea edx, [ebp - 0x1a4]
push edx
mov dword [ebp - 0x1a4], 0xb3b
call fcn.005039bf
inc ebx
jmp 0x551cb9
mov eax, dword [ebp - 0xfc]
push eax
call fcn.0040c6ec
add esp, 4
lea ecx, [ebp - 0x118]
push ecx
mov dword [ebp - 0x118], edi
call dword [sym.imp.SUCMLIB.dll_Ordinal_70]
mov ecx, dword [ebp - 0x118]
mov edx, dword [ecx]
mov eax, dword [edx + 0x24]
push 0x128e
call eax
mov eax, dword [ebp - 0x130]
cmp dword [eax + 0x50], edi
je 0x552276
mov ecx, dword [eax + 0x5c]
cmp ecx, edi
je 0x552276
mov edx, dword [ecx]
mov eax, dword [edx + 0xa8]
call eax
movzx eax, ax
mov ecx, 0xff0
cmp ax, cx
jne 0x552276
mov ecx, dword [ebp - 0x118]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
push 0xff0
call eax
mov ecx, dword [ebp - 0x118]
push ecx
call dword [0x5dd498]
test al, al
jne 0x5522af
lea edx, [ebp - 0x118]
push edx
call dword [sym.imp.SUCMLIB.dll_Ordinal_72]
push 0x5c77e8
lea eax, [ebp - 0x194]
push eax
mov dword [ebp - 0x194], 0xb51
call fcn.005039bf
lea ecx, [ebp - 0x118]
push ecx
call dword [sym.imp.SUCMLIB.dll_Ordinal_72]
call dword [0x5dd490]
mov dword [ebp - 0x16c], edi
mov dword [ebp - 0x168], edi
mov byte [ebp - 0x164], 0
mov dword [ebp - 0x160], edi
mov dword [ebp - 0x15c], edi
mov dword [ebp - 0x158], 2
mov dword [ebp - 0x154], edi
mov dword [ebp - 0x150], edi
mov dword [ebp - 0x14c], edi
cmp byte [ebp - 0x164], 0
jne 0x55233a
push 1
lea edx, [ebp - 0x16c]
push edx
call dword [0x5dd49c]
test al, al
jne 0x5522fd
mov byte [ebp - 0x101], al
push 0x5c77e8
lea eax, [ebp - 0x198]
push eax
mov dword [ebp - 0x198], 0xb66
call fcn.005039bf
mov esi, dword [ebp - 0x134]
xor edi, edi
mov ecx, dword [ebp - 0x110]
cmp edi, dword [ebp + 0x10]
jge 0x5523a9
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x552362
push 0x80004005
call fcn.004010a0
lea edx, [edi + edi*8]
shl edx, 4
mov ebx, dword [edx + esi]
mov eax, ebx
lea ecx, [ecx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x552396
test dx, dx
je 0x552392
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x552396
add eax, 4
add ecx, 4
test dx, dx
jne 0x552370
xor eax, eax
jmp 0x55239b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5523a6
push ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
inc edi
jmp 0x552342
mov edi, dword [ebp - 0x130]
mov eax, dword [edi + 0x2c]
add edi, 0x28
lea ecx, [ebp - 0x110]
mov dword [ebp - 0x11c], edi
cmp ecx, eax
jae 0x55248c
mov edx, dword [edi]
cmp edx, ecx
ja 0x55248c
mov esi, ecx
mov ecx, dword [edi + 8]
sub esi, edx
sar esi, 2
cmp eax, ecx
jne 0x552424
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
jbe 0x5523f7
push str.vector_T__too_long
call fcn.0051b7f8
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x552424
mov edx, ecx
shr edx, 1
mov ebx, 0x3fffffff
sub ebx, edx
cmp ebx, ecx
jae 0x552414
xor ecx, ecx
jmp 0x552416
add ecx, edx
cmp ecx, eax
jae 0x55241c
mov ecx, eax
push ecx
mov ecx, edi
call fcn.00403bc0
mov ebx, dword [edi + 4]
mov edx, dword [edi]
lea eax, [edx + esi*4]
mov dword [ebp - 0x128], ebx
mov dword [ebp - 0x138], ebx
mov byte [ebp - 4], 3
test ebx, ebx
je 0x55254e
mov esi, dword [eax]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi - 4], 0
lea ecx, [esi - 4]
jl 0x55246f
cmp eax, dword [esi - 0x10]
jne 0x55246f
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x552543
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
jne 0x552523
call fcn.00401ae0
mov ecx, dword [edi + 8]
cmp eax, ecx
jne 0x5524d8
mov edx, dword [edi]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
jbe 0x5524ab
push str.vector_T__too_long
call fcn.0051b7f8
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x5524d8
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x5524c8
xor ecx, ecx
jmp 0x5524ca
add ecx, edx
cmp ecx, eax
jae 0x5524d0
mov ecx, eax
push ecx
mov ecx, edi
call fcn.00403bc0
mov ebx, dword [edi + 4]
mov dword [ebp - 0x128], ebx
mov dword [ebp - 0x138], ebx
mov byte [ebp - 4], 4
test ebx, ebx
je 0x55254e
mov esi, dword [ebp - 0x110]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi - 4], 0
lea ecx, [esi - 4]
jl 0x55246f
cmp eax, dword [esi - 0x10]
jne 0x55246f
lea edi, [esi - 0x10]
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x552543
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.004ffad4
add esp, 0x10
add edi, 0x10
mov dword [ebx], edi
mov edi, dword [ebp - 0x11c]
add dword [edi + 4], 4
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x110]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x552578
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x148]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x55259e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0x130]
mov ecx, dword [esi + 0x48]
test ecx, ecx
je 0x5525de
cmp ecx, 2
je 0x5525d1
mov al, byte [esi + 0x74]
cmp al, 0xc
je 0x5525d1
cmp al, 0xd
je 0x5525d1
mov edx, dword [ebp - 0x1a0]
push edx
call fcn.00564a20
add esp, 4
mov eax, dword [esi + 0x48]
mov dword [esi + 0x4c], eax
mov dword [esi + 0x48], 0
cmp byte [esi + 0x60], 0
je 0x5525ef
mov eax, dword [0x5dd470]
test eax, eax
je 0x5525ef
call eax
cmp byte [esi + 0x61], 0
mov byte [esi + 0x60], 0
je 0x5525fd
mov byte [esi + 0x61], 0
mov al, byte [ebp - 0x111]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret 0x1c
push 0x80070057
call fcn.004010a0
cmp byte [ebp - 0x101], 0
je 0x55265a
call dword [0x5dd4b8]
lea eax, [ebp - 0x54]
call fcn.00402ba0
cmp byte [ebp - 0x4c], 0
jne 0x55265a
push 1
lea ecx, [ebp - 0x54]
push ecx
call dword [0x5dd49c]
cmp byte [ebp - 0x4c], 0
je 0x552648
mov esi, dword [ebp - 0x130]
add esi, 0x48
cmp dword [esi], 0
jne 0x55267b
push esi
call dword [0x5dd4a0]
cmp dword [esi], 0
jne 0x55267b
mov byte [ebp - 0x111], 0
mov dword [ebp - 4], 0xffffffff
mov eax, 0x5525a5
ret