Function at 0x470ac0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
mov eax, dword [esp + 0x24]
push ebx
xor ebx, ebx
push esi
mov ecx, dword [eax + 0x7b0]
xor eax, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], eax
cmp dword [ecx + 0x14], ebx
jle 0x4713b0
push ebp
push edi
mov ecx, dword [ecx + 8]
mov edi, dword [ecx + eax*4]
cmp edi, ebx
mov dword [esp + 0x1c], edi
je 0x471396
mov eax, dword [edi]
mov cl, byte [eax + 0x3d]
test cl, cl
je 0x471396
mov eax, dword [eax + 0x84]
cmp eax, 0xffffffff
je 0x470d43
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, ebx
je 0x470d43
mov edx, dword [0x829488]
push ebx
add eax, 0x14
push 4
push eax
lea eax, [edx*4 + 0x82948c]
push eax
call fcn.0045cba0
mov eax, dword [0x829488]
add esp, 0x10
lea esi, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [esp + 0x20], esi
mov dword [0x829488], eax
jl 0x470b63
mov dword [0x829488], ebx
push ebx
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 4
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x470d3b
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], ebx
sub edx, ecx
cmp edx, eax
jne 0x470bb1
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x470bc4
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x470bde
mov ecx, 0x83f450
call fcn.005ddd50
mov byte [0x81c644], 1
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x83f450]
cmp eax, ecx
jbe 0x470bf2
sub eax, ecx
jmp 0x470bfa
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x470c1a
mov edx, ecx
or edx, eax
je 0x470c1a
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x470d3b
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x470d3b
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
cmp ecx, ebx
mov byte [0x81c6fc], 1
not eax
jle 0x470ca5
mov ebp, 0x820e44
mov dword [esp + 0x14], ecx
jmp 0x470c52
xor ebx, ebx
mov ecx, dword [ebp]
cmp ecx, ebx
je 0x470c8d
mov esi, dword [ecx + 4]
cmp esi, ebx
jle 0x470c8d
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
cmp edx, ebx
je 0x470c8d
cmp esi, ebx
jle 0x470c8d
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x470c87
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x470c7f
mov edx, dword [edx + 4]
dec ebx
jne 0x470c72
mov ecx, dword [esp + 0x14]
add ebp, 4
dec ecx
mov dword [esp + 0x14], ecx
jne 0x470c50
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
xor ebx, ebx
cmp eax, dword [0x8294d8]
je 0x470cb8
inc dword [0x8294f0]
call fcn.0045dca0
cmp dword [0x8294e8], ebx
je 0x470d34
mov eax, dword [0x829464]
mov dword [esp + 0x10], ebx
cmp eax, ebx
je 0x470cfa
lea ecx, [esp + 0x10]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x470cef
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x470cef
cmp dword [eax], 0x29874362
je 0x470cfa
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [esp + 0x10], ebx
cmp eax, ebx
je 0x470d34
lea edx, [esp + 0x10]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x470d29
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x470d29
cmp dword [eax], 0xbad0bad
je 0x470d34
inc dword [0x8294f0]
call fcn.0045dca0
mov byte [0x81c6fc], 0
cmp esi, ebx
je 0x470d43
mov eax, dword [esi]
jmp 0x470d48
mov eax, dword [0x89fe34]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x28]
cmp eax, 0xffffffff
je 0x470f4f
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, ebx
je 0x470f4f
lea esi, [eax + 0x14]
mov eax, dword [0x829478]
push 1
push eax
push 4
push esi
call fcn.0045cc80
push 1
lea ecx, [esp + 0x3c]
push 4
push ecx
push esi
call fcn.0045cb20
push ebx
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x470f4f
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], ebx
sub edx, ecx
cmp edx, eax
jne 0x470dd3
call fcn.00406630
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x470de0
call fcn.00406630
mov ecx, 0x83f450
call fcn.004065e0
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x470e0a
mov edx, eax
or edx, ecx
je 0x470e0a
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x470f4f
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x470f4f
mov esi, dword [0x829478]
mov dword [0x829468], eax
mov eax, dword [0x8294e8]
mov byte [0x81c6fc], 1
cmp eax, ebx
mov dword [esp + 0x20], ebx
not esi
jle 0x470ead
mov dword [esp + 0x14], 0x820e44
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
je 0x470e8f
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x470e8f
mov edi, dword [eax]
mov ebp, dword [edi + 0xc]
sar ebp, 2
test edi, edi
je 0x470e8f
xor ebx, ebx
test ecx, ecx
jle 0x470e8f
mov ecx, edi
call fcn.00406620
xor esi, eax
lea eax, [edi + 0x14]
test ebp, ebp
jle 0x470e80
mov ecx, ebp
mov edx, dword [eax]
add eax, 4
xor esi, edx
dec ecx
jne 0x470e76
mov ecx, dword [esp + 0x14]
mov edi, dword [edi + 4]
inc ebx
mov edx, dword [ecx]
cmp ebx, dword [edx + 4]
jl 0x470e64
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [0x8294e8]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], edx
jl 0x470e41
cmp esi, dword [0x8294d8]
je 0x470eba
call fcn.00406630
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x470f42
mov ecx, 0x829464
mov dword [esp + 0x14], esi
call fcn.00406620
test eax, eax
je 0x470f04
mov ecx, dword [0x829464]
lea eax, [esp + 0x14]
push eax
push ecx
call fcn.00407b70
add esp, 8
test al, al
je 0x470eff
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x470eff
cmp dword [eax], 0x29874362
je 0x470f04
call fcn.00406630
mov ecx, 0x8294b0
mov dword [esp + 0x14], esi
call fcn.00406620
test eax, eax
je 0x470f42
mov eax, dword [0x8294b0]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x470f3d
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x470f3d
cmp dword [eax], 0xbad0bad
je 0x470f42
call fcn.00406630
mov edi, dword [esp + 0x1c]
mov byte [0x81c6fc], 0
xor ebx, ebx
mov eax, dword [edi]
add eax, 0x74
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x47118d
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, ebx
je 0x47118d
mov ecx, dword [0x829488]
push ebx
add eax, 0x14
push 4
lea edx, [ecx*4 + 0x82948c]
push eax
push edx
call fcn.0045cba0
mov eax, dword [0x829488]
add esp, 0x10
lea esi, [eax*4 + 0x82948c]
inc eax
cmp eax, 8
mov dword [esp + 0x28], esi
mov dword [0x829488], eax
jl 0x470fae
mov dword [0x829488], ebx
push ebx
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 4
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x471185
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], ebx
sub edx, ecx
cmp edx, eax
jne 0x470ffc
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x47100f
inc dword [0x8294f0]
call fcn.0045dca0
mov al, byte [0x81c644]
test al, al
jne 0x471029
mov ecx, 0x83f450
call fcn.005ddd50
mov byte [0x81c644], 1
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x83f450]
cmp eax, ecx
jbe 0x47103d
sub eax, ecx
jmp 0x471045
mov ecx, dword [0x83f454]
add eax, ecx
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x471065
mov edx, eax
or edx, ecx
je 0x471065
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x471185
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x471185
mov ecx, dword [0x8294e8]
mov dword [0x829468], eax
mov eax, dword [0x829478]
cmp ecx, ebx
mov byte [0x81c6fc], 1
not eax
jle 0x4710e2
mov ebp, 0x820e44
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp]
test ecx, ecx
je 0x4710d4
mov esi, dword [ecx + 4]
test esi, esi
jle 0x4710d4
mov edx, dword [ecx]
mov edi, dword [edx + 0xc]
sar edi, 2
test edx, edx
je 0x4710d4
test esi, esi
jle 0x4710d4
mov ebx, esi
mov ecx, dword [edx]
xor eax, ecx
lea ecx, [edx + 0x14]
test edi, edi
jle 0x4710ce
mov esi, edi
xor eax, dword [ecx]
add ecx, 4
dec esi
jne 0x4710c6
mov edx, dword [edx + 4]
dec ebx
jne 0x4710b9
mov ecx, dword [esp + 0x20]
add ebp, 4
dec ecx
mov dword [esp + 0x20], ecx
jne 0x471099
cmp eax, dword [0x8294d8]
je 0x4710f5
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x471174
mov eax, dword [0x829464]
mov dword [esp + 0x18], esi
cmp eax, esi
je 0x47113a
lea edx, [esp + 0x18]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x47112f
mov eax, dword [esp + 0x18]
cmp eax, esi
je 0x47112f
cmp dword [eax], 0x29874362
je 0x47113a
inc dword [0x8294f0]
call fcn.0045dca0
mov eax, dword [0x8294b0]
mov dword [esp + 0x18], esi
cmp eax, esi
je 0x471174
lea ecx, [esp + 0x18]
push ecx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x471169
mov eax, dword [esp + 0x18]
cmp eax, esi
je 0x471169
cmp dword [eax], 0xbad0bad
je 0x471174
inc dword [0x8294f0]
call fcn.0045dca0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov byte [0x81c6fc], 0
xor ebx, ebx
cmp esi, ebx
je 0x47118d
mov eax, dword [esi]
jmp 0x471192
mov eax, dword [0x89fe34]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x24]
cmp eax, 0xffffffff
je 0x471396
push eax
call fcn.0045c0b0
add esp, 4
cmp eax, ebx
je 0x471396
mov edx, dword [0x829478]
push 1
lea esi, [eax + 0x14]
push edx
push 4
push esi
call fcn.0045cc80
push 1
lea eax, [esp + 0x3c]
push 4
push eax
push esi
call fcn.0045cb20
push ebx
call fcn.0045d120
mov eax, dword [0x81c700]
add esp, 0x24
inc eax
cmp eax, 0x186a0
mov dword [0x81c700], eax
jb 0x471396
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, eax
mov dword [0x81c700], ebx
sub edx, ecx
cmp edx, eax
jne 0x47121e
call fcn.00406630
mov eax, dword [0x820dd0]
mov ecx, dword [0x829478]
mov edx, ecx
sub edx, eax
cmp edx, ecx
jne 0x47122b
call fcn.00406630
mov ecx, 0x83f450
call fcn.004065e0
mov ecx, dword [0x829468]
cmp eax, ecx
jb 0x471255
mov edx, eax
or edx, ecx
je 0x471255
mov edx, eax
sub edx, ecx
cmp edx, 0x3a98
jbe 0x471396
mov cl, byte [0x81c6fc]
test cl, cl
jne 0x471396
mov esi, dword [0x829478]
mov dword [0x829468], eax
mov eax, dword [0x8294e8]
mov byte [0x81c6fc], 1
cmp eax, ebx
mov dword [esp + 0x20], ebx
not esi
jle 0x4712f8
mov dword [esp + 0x14], 0x820e44
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
je 0x4712da
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x4712da
mov edi, dword [eax]
mov ebp, dword [edi + 0xc]
sar ebp, 2
test edi, edi
je 0x4712da
xor ebx, ebx
test ecx, ecx
jle 0x4712da
mov ecx, edi
call fcn.00406620
xor esi, eax
lea eax, [edi + 0x14]
test ebp, ebp
jle 0x4712cb
mov ecx, ebp
mov edx, dword [eax]
add eax, 4
xor esi, edx
dec ecx
jne 0x4712c1
mov ecx, dword [esp + 0x14]
mov edi, dword [edi + 4]
inc ebx
mov edx, dword [ecx]
cmp ebx, dword [edx + 4]
jl 0x4712af
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [0x8294e8]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], edx
jl 0x47128c
cmp esi, dword [0x8294d8]
je 0x471305
call fcn.00406630
mov eax, dword [0x8294e8]
xor esi, esi
cmp eax, esi
je 0x47138d
mov ecx, 0x829464
mov dword [esp + 0x14], esi
call fcn.00406620
test eax, eax
je 0x47134f
mov ecx, dword [0x829464]
lea eax, [esp + 0x14]
push eax
push ecx
call fcn.00407b70
add esp, 8
test al, al
je 0x47134a
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x47134a
cmp dword [eax], 0x29874362
je 0x47134f
call fcn.00406630
mov ecx, 0x8294b0
mov dword [esp + 0x14], esi
call fcn.00406620
test eax, eax
je 0x47138d
mov eax, dword [0x8294b0]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00407b70
add esp, 8
test al, al
je 0x471388
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x471388
cmp dword [eax], 0xbad0bad
je 0x47138d
call fcn.00406630
mov byte [0x81c6fc], 0
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
inc eax
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x24], eax
cmp eax, edx
jl 0x470ae6
pop edi
pop ebp
mov ecx, dword [esp + 0x2c]
lea esi, [ecx + 0x72c]
mov ecx, esi
call fcn.00691b40
push ecx
mov ecx, esi
fstp dword [esp]
call fcn.00690560
mov ecx, esi
call fcn.00693400
push ecx
mov ecx, esi
fstp dword [esp]
call fcn.00691e20
pop esi
pop ebx
add esp, 0x20
ret