Function at 0x54c100
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5d4275
push eax
mov dword fs:[0], esp
sub esp, 0x64
push ebx
push esi
push edi
xor edi, edi
cmp dword [0x692efc], edi
jne 0x54c15a
cmp dword [0x693f40], edi
je 0x54c15a
push 0x34
call fcn.0048f2c5
add esp, 4
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], edi
cmp eax, edi
je 0x54c14c
push eax
call fcn.005aeb30
jmp 0x54c14e
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [0x692efc], eax
call fcn.005c6450
call fcn.004012f0
mov ebx, 1
cmp dword [0x6a45d8], edi
je 0x54c2a2
lea eax, [ebp - 0x3c]
call fcn.0041b480
lea esi, [ebp - 0x2c]
call fcn.0041b620
mov ecx, dword [eax]
cmp ecx, edi
jne 0x54c18f
xor ecx, ecx
jmp 0x54c191
mov ecx, dword [ecx]
mov eax, dword [eax + 8]
mov edx, dword [ecx + 8]
cmp edx, eax
ja 0x54c19d
sub eax, edx
mov ecx, dword [ecx + 4]
mov ecx, dword [ecx + eax*4]
push 0x68041c
lea ecx, [ecx + 8]
call fcn.004021d0
mov eax, dword [eax + 0x1c]
cmp eax, dword [0x692b70]
je 0x54c2a2
mov eax, dword [0x6a45d8]
cmp eax, edi
je 0x54c1fc
mov edx, dword [0x6a45d4]
mov ecx, dword [0x6a45d0]
lea eax, [edx + eax - 1]
cmp ecx, eax
ja 0x54c1de
sub eax, ecx
mov ecx, dword [0x6a45cc]
mov ecx, dword [ecx + eax*4]
mov edx, dword [ecx]
mov eax, dword [edx]
push edi
call eax
sub dword [0x6a45d8], ebx
jne 0x54c1fc
mov dword [0x6a45d4], edi
mov eax, dword [0x6a45f0]
cmp eax, edi
je 0x54c249
mov ecx, dword [0x6a45ec]
lea eax, [ecx + eax - 1]
mov ecx, dword [0x6a45e8]
cmp ecx, eax
ja 0x54c21b
sub eax, ecx
mov edx, dword [0x6a45e4]
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
cmp eax, edi
je 0x54c233
push eax
call fcn.0048f06d
add esp, 4
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
sub dword [0x6a45f0], ebx
jne 0x54c249
mov dword [0x6a45ec], edi
mov eax, dword [0x6a4608]
cmp eax, edi
je 0x54c296
mov ecx, dword [0x6a4604]
lea eax, [ecx + eax - 1]
mov ecx, dword [0x6a4600]
cmp ecx, eax
ja 0x54c268
sub eax, ecx
mov edx, dword [0x6a45fc]
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
cmp eax, edi
je 0x54c280
push eax
call fcn.0048f06d
add esp, 4
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
sub dword [0x6a4608], ebx
jne 0x54c296
mov dword [0x6a4604], edi
cmp dword [0x6a45d8], edi
jne 0x54c175
lea eax, [ebp - 0x3c]
call fcn.0041b480
lea esi, [ebp - 0x2c]
call fcn.0041b620
mov ecx, dword [eax]
cmp ecx, edi
jne 0x54c2bc
xor ecx, ecx
jmp 0x54c2be
mov ecx, dword [ecx]
mov eax, dword [eax + 8]
mov edx, dword [ecx + 8]
cmp edx, eax
ja 0x54c2ca
sub eax, edx
mov ecx, dword [ecx + 4]
mov ebx, dword [ecx + eax*4]
mov edx, dword [ebx + 4]
lea esi, [ebx + 8]
mov edi, 0x6a9d50
mov dword [0x6a9d4c], edx
call fcn.0041f0e0
lea esi, [ebx + 0x28]
mov edi, 0x6a9d70
call fcn.0041f1a0
lea esi, [ebx + 0x48]
mov edi, 0x6a9d90
call fcn.0041f260
lea esi, [ebx + 0x68]
mov edi, 0x6a9db0
call fcn.0041f400
call fcn.0054b410
lea eax, [ebp - 0x3c]
call fcn.0041b500
lea esi, [ebp - 0x2c]
call fcn.0041b620
mov ecx, dword [eax]
xor ebx, ebx
test ecx, ecx
je 0x54c32c
mov ecx, dword [ecx]
mov eax, dword [eax + 8]
mov edx, dword [ecx + 8]
cmp edx, eax
ja 0x54c338
sub eax, edx
mov ecx, dword [ecx + 4]
mov eax, dword [ecx + eax*4]
mov esi, dword [eax]
mov edi, dword [eax + 4]
cmp esi, edi
je 0x54c35a
push esi
call fcn.0058a190
add esi, 0x410
add esp, 4
cmp esi, edi
jne 0x54c347
mov ecx, 0x6807b8
mov edx, 0x6a9db0
call fcn.00416e40
cmp dword [eax + 0x94], ebx
je 0x54c385
mov eax, dword [eax + 0x9c]
mov dword [ebp - 0x1c], eax
cmp eax, ebx
je 0x54c388
mov edx, dword [eax]
mov dword [ebp - 0x18], edx
jmp 0x54c38b
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
lea eax, [ebp - 0x1c]
mov esi, dword [eax + 4]
mov edi, dword [eax]
cmp esi, ebx
je 0x54c3e8
lea eax, [esi + 4]
push eax
call fcn.0041eeb0
add esp, 4
push eax
mov dword [ebp - 0x14], eax
call fcn.005475c0
mov ebx, 0x100
lea ecx, [ebp - 0x14]
call fcn.0041b130
mov ecx, dword [eax]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
dec ebx
jne 0x54c3b1
mov eax, dword [esi]
test eax, eax
jne 0x54c3da
jmp 0x54c3d0
mov eax, dword [edi + 4]
add edi, 4
test eax, eax
je 0x54c3d0
mov esi, edi
sub esi, eax
neg esi
sbb esi, esi
and esi, eax
jne 0x54c397
xor ebx, ebx
push 0x680668
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
push ebx
push eax
mov ecx, 0x6804e0
mov edx, 0x6a9d70
call fcn.0040f740
mov ecx, dword [ebp + 8]
add eax, 0x1c
push eax
push ecx
call fcn.00585af0
mov edx, dword [0x692eec]
push 0x6a9d48
push edx
call fcn.004f6860
push 0x680518
mov ecx, 0x6a9d50
call fcn.004021d0
cmp dword [eax + 0x1c], ebx
jl 0x54c45f
push 0x680518
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
mov esi, dword [0x692eec]
call fcn.004f36d0
call fcn.0059c5f0
push 0x680438
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
cmp dword [0x692b6c], eax
je 0x54c8e0
mov dword [0x692b68], ebx
mov byte [0x692b3f], 1
mov byte [0x692b3e], 1
mov dword [0x692c28], 2
cmp dword [0x6a9dc0], ebx
je 0x54c562
mov esi, dword [0x680350]
mov ecx, dword [0x68033c]
mov eax, ecx
cmp esi, 0x10
jae 0x54c4bf
mov eax, 0x68033c
mov edx, dword [0x68034c]
add edx, eax
cmp esi, 0x10
jae 0x54c4d1
mov ecx, 0x68033c
xor eax, eax
cmp ecx, edx
je 0x54c4f4
mov esi, eax
mov edi, eax
shl esi, 6
shr edi, 2
add esi, edi
movsx edi, byte [ecx]
lea esi, [esi + edi - 0x61c88647]
inc ecx
xor eax, esi
cmp ecx, edx
jne 0x54c4d7
xor edx, edx
div dword [0x6a9db4]
mov eax, dword [0x6a9db0]
push 0x68033c
lea esi, [eax + edx*4]
mov eax, esi
call fcn.0041e360
mov ecx, dword [eax]
cmp ecx, ebx
je 0x54c562
mov edx, dword [ecx]
push edx
push ecx
mov dword [eax], edx
call fcn.0041dd50
sub dword [0x6a9dc0], eax
mov eax, dword [0x6a9dc8]
cmp esi, eax
jne 0x54c562
cmp dword [0x6a9dc0], ebx
je 0x54c54e
cmp dword [eax], ebx
jne 0x54c562
lea esp, [esp]
add eax, 4
mov dword [0x6a9dc8], eax
cmp dword [eax], ebx
je 0x54c540
jmp 0x54c562
mov ecx, dword [0x6a9db4]
mov edx, dword [0x6a9db0]
lea eax, [edx + ecx*4]
mov dword [0x6a9dc8], eax
mov esi, dword [0x610168]
lea ecx, [ebp - 0x6c]
push ecx
call esi
lea edx, [ebp - 0x64]
push edx
call dword [0x610164]
lea eax, [ebp - 0x6c]
push eax
mov dword [ebp - 0x5c], 0x64
call esi
mov esi, dword [0x692eec]
jmp 0x54c590
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
sub eax, ebx
je 0x54c5a4
sub eax, 2
jne 0x54c590
jmp 0x54c5ae
mov dword [0x692c28], 1
mov esi, dword [0x692f10]
lea edi, [esi + 0x3c]
push 0x506970
push edi
mov dword [ebp - 0x18], edi
call fcn.0043d140
mov eax, dword [edi]
mov ecx, dword [eax]
mov dword [ebp - 0x14], eax
mov dword [ebp + 8], ecx
cmp ecx, eax
je 0x54c67e
mov ebx, dword [esi + 0x24]
mov edi, dword [ebp + 8]
mov ecx, dword [ebx + 4]
add edi, 8
push edi
push ecx
push ebx
call fcn.00406ce0
mov ecx, dword [esi + 0x28]
mov edx, 0x3ffffffe
sub edx, ecx
cmp edx, 1
jb 0x54c82e
inc ecx
mov dword [esi + 0x28], ecx
mov dword [ebx + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov edx, dword [esi + 0x24]
mov eax, dword [edx + 4]
mov ecx, dword [edi]
mov dword [ecx + 0x188], eax
mov edx, dword [edi]
cmp byte [edx + 0x198], 0
je 0x54c65e
mov ebx, dword [esi + 0x30]
mov eax, dword [ebx + 4]
push edi
push eax
push ebx
call fcn.00406ce0
mov ecx, dword [esi + 0x34]
mov edx, 0x3ffffffe
sub edx, ecx
cmp edx, 1
jb 0x54c82e
inc ecx
mov dword [esi + 0x34], ecx
mov dword [ebx + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov edx, dword [esi + 0x30]
mov eax, dword [edx + 4]
mov ecx, dword [edi]
mov dword [ecx + 0x18c], eax
mov edx, dword [edi]
mov eax, dword [ebp + 8]
mov dword [edx + 0x194], 0xffffffff
mov eax, dword [eax]
mov dword [ebp + 8], eax
cmp eax, dword [ebp - 0x14]
jne 0x54c5d7
mov edi, dword [ebp - 0x18]
mov ecx, dword [edi]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [edi]
mov dword [ecx + 4], ecx
mov dword [edi + 4], 0
cmp eax, dword [edi]
je 0x54c6a5
mov ebx, dword [eax]
push eax
call fcn.0048f06d
add esp, 4
mov eax, ebx
cmp ebx, dword [edi]
jne 0x54c694
mov ecx, dword [0x692f10]
xor edi, edi
push ecx
mov dword [esi + 0x84], edi
call fcn.00506dd0
mov ebx, dword [0x610168]
lea edx, [ebp - 0x2c]
push edx
call ebx
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x28]
sbb ecx, dword [ebp - 0x68]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], ecx
fild qword [ebp - 0x3c]
fild qword [ebp - 0x64]
fdivp st(1)
fmul qword [0x650e50]
fild dword [ebp - 0x5c]
fcompp
fnstsw ax
test ah, 5
jp 0x54c7f1
test byte [0x692a9c], 1
jne 0x54c7e6
or dword [0x692a9c], 1
mov ecx, 0x645718
mov esi, 0x28
mov eax, esi
cdq
sub eax, edx
sar eax, 1
cmp dword [ecx + eax*4], 0xb
jae 0x54c72d
or edx, 0xffffffff
sub edx, eax
lea ecx, [ecx + eax*4 + 4]
add esi, edx
jmp 0x54c72f
mov esi, eax
cmp esi, edi
jg 0x54c713
cmp ecx, str.vector_T__too_long
jne 0x54c73e
add ecx, 0xfffffffc
mov eax, dword [ecx]
fld1
fst dword [0x692ab4]
mov dword [0x692aa0], edi
mov dword [0x692aa4], eax
mov byte [0x692aac], 0
mov dword [0x692ab0], edi
mov dword [0x692ab8], edi
mov dword [0x692abc], edi
mov ecx, 0x645718
mov esi, 0x28
mov eax, esi
cdq
sub eax, edx
sar eax, 1
cmp dword [ecx + eax*4], 0xb
jae 0x54c790
or edx, 0xffffffff
sub edx, eax
lea ecx, [ecx + eax*4 + 4]
add esi, edx
jmp 0x54c792
mov esi, eax
cmp esi, edi
jg 0x54c776
cmp ecx, str.vector_T__too_long
jne 0x54c7a1
add ecx, 0xfffffffc
mov eax, dword [ecx]
fstp dword [0x692ad4]
push 0x5ef990
mov dword [0x692ac0], edi
mov dword [0x692ac4], eax
mov byte [0x692acc], 0
mov dword [0x692ad0], edi
mov dword [0x692ad8], edi
mov dword [0x692adc], edi
mov dword [0x692ae4], edi
mov dword [0x692ae0], edi
call fcn.0048ef30
add esp, 4
call fcn.004ed120
lea ecx, [ebp - 0x6c]
push ecx
call ebx
mov esi, dword [0x692c28]
cmp esi, 2
jne 0x54c881
cmp byte [0x692b3f], 0
je 0x54c881
push 0x680438
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
cmp dword [0x692b6c], eax
je 0x54c838
xor ebx, ebx
jmp 0x54c585
push str.list_T__too_long
call fcn.0047cca5
lea edx, [ebp - 0x38]
push edx
mov esi, 0x6803c8
mov eax, 0x6a9d70
call fcn.0041d6f0
mov ecx, dword [eax]
mov dword [ebp - 0x28], ecx
push 0x6804fc
mov ecx, 0x6a9d50
cmp dword [eax + 4], edi
je 0x54c86d
call fcn.004021d0
mov dword [eax + 0x1c], 4
jmp 0x54c893
call fcn.004021d0
mov dword [eax + 0x1c], 0x80
mov dword [0x692b60], edi
jmp 0x54c893
push 0x6804fc
mov ecx, 0x6a9d50
call fcn.004021d0
mov dword [eax + 0x1c], esi
lea eax, [ebp - 0x3c]
mov byte [0x692b3f], 0
mov byte [0x692b3e], 0
call fcn.0041b600
lea esi, [ebp - 0x2c]
call fcn.0041b620
mov ecx, dword [eax]
cmp ecx, edi
jne 0x54c8bb
xor edx, edx
jmp 0x54c8bd
mov edx, dword [ecx]
mov eax, dword [eax + 8]
mov ecx, dword [edx + 8]
cmp ecx, eax
ja 0x54c8c9
sub eax, ecx
mov ecx, dword [0x692b68]
mov edx, dword [edx + 4]
mov esi, dword [edx + eax*4]
push ecx
call fcn.0041aea0
jmp 0x54ca0d
mov eax, dword [0x6a45d8]
cmp eax, ebx
je 0x54c91d
mov ecx, dword [0x6a45d4]
lea eax, [ecx + eax - 1]
mov ecx, dword [0x6a45d0]
cmp ecx, eax
ja 0x54c8ff
sub eax, ecx
mov edx, dword [0x6a45cc]
mov ecx, dword [edx + eax*4]
mov eax, dword [ecx]
mov edx, dword [eax]
push ebx
call edx
dec dword [0x6a45d8]
jne 0x54c91d
mov dword [0x6a45d4], ebx
call fcn.00402e40
call fcn.00402ef0
cmp dword [0x6a45c0], ebx
je 0x54c9d3
lea eax, [ebp - 0x3c]
call fcn.00401180
lea esi, [ebp - 0x2c]
call fcn.0041b620
mov ecx, dword [eax]
cmp ecx, ebx
jne 0x54c94d
xor ecx, ecx
jmp 0x54c94f
mov ecx, dword [ecx]
mov eax, dword [eax + 8]
mov edx, dword [ecx + 8]
cmp edx, eax
ja 0x54c95b
sub eax, edx
mov ecx, dword [ecx + 4]
mov esi, dword [ecx + eax*4]
push 0x68041c
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
cmp dword [esi + 8], eax
jne 0x54c9d3
lea eax, [ebp - 0x48]
call fcn.00401180
lea esi, [ebp - 0x54]
call fcn.0041b620
mov ecx, dword [eax]
cmp ecx, ebx
jne 0x54c992
xor ecx, ecx
jmp 0x54c994
mov ecx, dword [ecx]
mov eax, dword [eax + 8]
mov edx, dword [ecx + 8]
cmp edx, eax
ja 0x54c9a0
sub eax, edx
mov edx, dword [ecx + 4]
mov esi, dword [edx + eax*4]
push 0x680438
mov ecx, 0x6a9d50
call fcn.004021d0
mov eax, dword [eax + 0x1c]
cmp dword [esi + 0xc], eax
jne 0x54c9d3
cmp dword [0x6a45c0], ebx
je 0x54c9d3
dec dword [0x6a45c0]
jne 0x54c9d3
mov dword [0x6a45bc], ebx
push 0x6804fc
mov ecx, 0x6a9d50
call fcn.004021d0
cmp dword [eax + 0x1c], 2
je 0x54ca0d
push 0x68041c
mov ecx, 0x6a9d50
call fcn.004021d0
mov esi, dword [eax + 0x1c]
push 0x68041c
mov ecx, 0x6a9d50
dec esi
call fcn.004021d0
mov dword [eax + 0x1c], esi
call fcn.00547740
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword [0x692b78], 0xffffffa0
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4