Function at 0x4c54d0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ecx, eax
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x18
test byte [eax + 0x18], 1
je 0x4c41d4
mov esi, dword [eax + 8]
test esi, esi
jne 0x4c41b6
mov ebx, dword [eax + 0xc]
test ebx, ebx
jne 0x4c41b6
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4c41d4
test byte [edx + 0x18], 1
je 0x4c4378
mov eax, dword [edx + 8]
test eax, eax
je 0x4c4362
mov dword [ebp - 0x18], 0xffffffff
jmp 0x4c41e5
test byte [edx + 0x18], 1
jne 0x4c4334
mov dword [ebp - 0x18], 1
mov al, byte [ecx + 0x19]
mov byte [ebp - 0x1e], al
and eax, 0xff
mov edi, eax
mov al, byte [ecx + 0x18]
shr al, 1
mov ebx, edi
and eax, 0xff
sub ebx, eax
mov al, byte [edx + 0x19]
mov byte [ebp - 0x1d], al
and eax, 0xff
mov dword [ebp - 0x24], eax
mov al, byte [edx + 0x18]
mov esi, dword [ebp - 0x24]
shr al, 1
and eax, 0xff
sub esi, eax
cmp ebx, 1
mov eax, esi
je 0x4c4390
cmp eax, 1
je 0x4c43a7
cmp ebx, eax
jg 0x4c4329
jl 0x4c4326
sub edi, dword [ebp - 0x24]
mov dword [ebp - 0x14], edi
js 0x4c4408
mov esi, dword [ecx + 0x10]
mov edi, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x14], 8
jg 0x4c4266
jmp 0x4c427e
xor esi, esi
mov edi, edx
mov ebx, dword [ebp - 0x14]
mov edx, esi
sub ebx, 8
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], 8
jg 0x4c4262
mov dword [ebp - 0x10], edi
mov edi, esi
xor esi, esi
mov ecx, dword [ebp - 0x14]
test ecx, ecx
jle 0x4c4318
lea esi, [esi]
mov eax, 0xcccccccd
mul esi
mov ebx, edx
mov edx, esi
shr ebx, 3
mov esi, ebx
lea eax, [ebx + ebx*4]
mov ebx, edi
add eax, eax
sub edx, eax
mov eax, edx
shl eax, 5
sub eax, edx
mov ecx, eax
shl ecx, 6
sub ecx, eax
mov eax, 0xcccccccd
lea ecx, [edx + ecx*8]
mul edi
shr edx, 3
lea ecx, [ecx + ecx*4]
lea edx, [edx + edx*4]
lea ecx, [ecx + ecx*4]
shl ecx, 8
add edx, edx
sub ebx, edx
add ecx, edi
mov edx, ebx
shl edx, 5
sub edx, ebx
mov eax, edx
shl eax, 6
sub eax, edx
lea eax, [ebx + eax*8]
lea eax, [eax + eax*4]
lea ebx, [eax + eax*4]
mov eax, 0xcccccccd
mul ecx
shl ebx, 8
mov edi, edx
shr edi, 3
mov edx, dword [ebp - 0x10]
lea eax, [ebx + edx]
mov edx, 0xcccccccd
mul edx
shr edx, 3
dec dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
jne 0x4c4290
mov eax, dword [ebp - 0x1c]
cmp esi, dword [eax + 0x10]
ja 0x4c4329
je 0x4c43d0
neg dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
add esp, 0x18
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [edx + 8]
test eax, eax
jne 0x4c4350
mov eax, dword [edx + 0xc]
test eax, eax
jne 0x4c4350
mov edi, dword [edx + 0x10]
test edi, edi
je 0x4c41de
lea esi, [esi]
mov dword [ebp - 0x18], 1
mov eax, dword [ebp - 0x18]
add esp, 0x18
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [edx + 0xc]
test eax, eax
jne 0x4c41cb
mov eax, dword [edx + 0x10]
test eax, eax
jne 0x4c41cb
mov dword [ebp - 0x18], 0xffffffff
mov eax, dword [ebp - 0x18]
add esp, 0x18
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [ecx + 8]
test esi, esi
jne 0x4c4228
dec eax
jne 0x4c4326
mov edi, dword [edx + 8]
test edi, edi
jne 0x4c4326
jmp 0x4c43c4
mov esi, dword [edx + 8]
test esi, esi
jne 0x4c4231
dec ebx
jne 0x4c4329
mov esi, dword [ecx + 8]
test esi, esi
jne 0x4c4329
mov dword [ebp - 0x18], 0
jmp 0x4c4329
mov edx, eax
mov eax, dword [eax + 0xc]
cmp eax, edi
jb 0x4c4329
cmp edi, eax
jne 0x4c4326
mov eax, dword [edx + 8]
cmp eax, dword [ebp - 0x10]
jb 0x4c4329
cmp dword [ebp - 0x10], eax
jne 0x4c4326
mov al, byte [ebp - 0x1d]
cmp byte [ebp - 0x1e], al
jne 0x4c4329
jmp 0x4c43c4
mov esi, dword [edx + 0x10]
mov edi, dword [edx + 0xc]
mov edx, dword [edx + 8]
mov dword [ebp - 0x1c], ecx
neg dword [ebp - 0x14]
neg dword [ebp - 0x18]
mov dword [ebp - 0x10], edx
jmp 0x4c425a
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x8c
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x58], edx
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x18]
cmp eax, 0x2e
ja case.0x4c54fa.0
jmp dword [eax*4 + 0x542590]
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je case.0x4c54fa.0
mov edx, dword [ebp - 0x58]
test edx, edx
je case.0x4c54fa.0
cmp ebx, eax
je 0x4c59e9
cmp ebx, 3
je 0x4c59e9
cmp ebx, 0x1e
je 0x4c59e9
cmp ebx, 0x1f
je 0x4c59e9
cmp ebx, 0x20
je 0x4c59e9
cmp ebx, 0x21
je 0x4c59e9
cmp ebx, 0x22
je 0x4c59e9
cmp ebx, 0x23
je 0x4c59e9
cmp ebx, 0x24
je 0x4c59e9
cmp ebx, 0x25
je 0x4c59e9
cmp ebx, 0x26
je 0x4c59e9
cmp ebx, 0x27
je 0x4c59e9
cmp ebx, 0x28
je 0x4c59e9
cmp ebx, 0x29
je 0x4c59e9
cmp ebx, 0x2a
je 0x4c59e9
lea esi, [esi]
mov ebx, 0xfffffffe
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x54]
test eax, eax
je case.0x4c54fa.0
mov eax, dword [ebp - 0x58]
test eax, eax
je case.0x4c54fa.0
cmp ebx, 0x2c
jne case.0x4c54fa.0
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x54]
mov eax, dword [ecx + 0xc]
cmp dword [ebx + 0xc], eax
jne 0x4c63bd
push eax
push eax
mov edi, dword [ecx + 8]
push edi
mov esi, dword [ebx + 8]
push esi
call fcn.00483290
add esp, 0x10
cmp eax, 0
jg 0x4c56e0
jmp 0x4c59ac
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x50], ecx
test eax, eax
je 0x4c5607
mov ecx, dword [ebp - 0x54]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x4c], edx
test eax, eax
je 0x4c561a
mov eax, dword [ebp - 0x58]
mov eax, dword [eax + 8]
mov dword [ebp - 0x4c], eax
cmp ebx, 0x15
je 0x4c63b3
cmp ebx, 0x2e
je 0x4c5663
cmp ebx, 1
je 0x4c5663
cmp ebx, 2
je 0x4c5663
cmp ebx, 0x10
je 0x4c5663
cmp ebx, 0x11
je 0x4c5663
cmp ebx, 0x12
je 0x4c5663
cmp ebx, 0x14
je 0x4c5663
cmp ebx, 0x16
je 0x4c5663
cmp ebx, 0x17
je 0x4c5663
cmp ebx, 0x18
je 0x4c5663
cmp ebx, 0x1a
je 0x4c5663
cmp ebx, 0x1d
jne case.0x4c54fa.0
cmp edi, 1
je 0x4c5bf5
cmp edi, 2
jne 0x4c5ece
cmp esi, 1
je 0x4c59fb
cmp esi, 2
jne 0x4c61b5
mov edx, dword [ebp - 0x50]
mov cl, byte [edx]
test cl, cl
je 0x4c5ebb
mov ebx, dword [ebp - 0x4c]
mov dl, byte [ebx]
test dl, dl
je 0x4c56e0
mov ebx, dword [ebp - 0x50]
cmp dl, 0x20
je 0x4c5b90
lea eax, [edx - 9]
cmp al, 1
jbe 0x4c5b90
cmp dl, 0xd
je 0x4c5b90
cmp cl, 0x20
je 0x4c56cd
lea eax, [ecx - 9]
cmp al, 1
ja 0x4c5bd0
and edx, 0xff
mov eax, 0x20
cmp eax, edx
js 0x4c57c7
mov ebx, 1
jmp 0x4c55a5
mov edi, dword [ebp - 0x54]
test edi, edi
je case.0x4c54fa.0
mov esi, dword [ebp - 0x58]
test esi, esi
je case.0x4c54fa.0
cmp ebx, 0xf
jne case.0x4c54fa.0
mov edx, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 8]
cmp eax, dword [ecx + 8]
je 0x4c5957
test eax, eax
jne 0x4c56e0
jmp 0x4c57c7
mov eax, dword [ebp - 0x54]
test eax, eax
je case.0x4c54fa.0
mov eax, dword [ebp - 0x58]
test eax, eax
je case.0x4c54fa.0
cmp ebx, 0xc
jne case.0x4c54fa.0
mov ecx, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x58]
fld qword [ecx + 0x10]
fsub qword [ebx + 0x10]
mov esi, dword [ecx + 8]
mov edi, dword [ebx + 8]
fnstcw word [ebp - 0x1a]
mov ax, word [ebp - 0x1a]
sub esi, edi
fld st(0)
fdiv dword [0x543040]
mov ah, 0xc
mov word [ebp - 0x1c], ax
fldcw word [ebp - 0x1c]
fistp dword [ebp - 0x20]
fldcw word [ebp - 0x1a]
mov edx, dword [ebp - 0x20]
push edx
fild dword [esp]
mov eax, dword [ecx + 0xc]
fmul dword [0x543044]
mov ecx, dword [ebx + 0xc]
add esp, 4
sub eax, ecx
cmp esi, 0
faddp st(1)
lea edi, [eax + edx]
jne 0x4c631e
cmp edi, 0
jne 0x4c651c
fldz
fxch st(1)
fucom st(1)
fnstsw ax
and ah, 0x45
cmp ah, 0x40
je 0x4c659a
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x4c56e0
or ebx, 0xffffffff
jmp 0x4c55a5
mov eax, dword [ebp - 0x54]
test eax, eax
je case.0x4c54fa.0
mov eax, dword [ebp - 0x58]
test eax, eax
je case.0x4c54fa.0
lea eax, [ebx - 0xd]
cmp eax, 1
ja case.0x4c54fa.0
mov edx, dword [ebp - 0x54]
mov eax, dword [edx]
cmp eax, 0xe
je 0x4c6532
cmp eax, 0xd
jne case.0x4c54fa.0
mov eax, dword [ebp - 0x54]
fld dword [eax + 8]
fstp qword [ebp - 0x38]
mov edx, dword [ebp - 0x58]
mov eax, dword [edx]
cmp eax, 0xe
je 0x4c6592
cmp eax, 0xd
jne case.0x4c54fa.0
mov ecx, dword [ebp - 0x58]
fld dword [ecx + 8]
push eax
push eax
mov eax, dword [ebp - 0x34]
push eax
mov eax, dword [ebp - 0x38]
push eax
fstp qword [ebp - 0x68]
call fcn.004719a0
add esp, 0x10
fld qword [ebp - 0x68]
test eax, eax
je 0x4c65a5
sub esp, 0x10
fstp qword [esp]
call fcn.004719a0
add esp, 0x10
test eax, eax
sete al
xor ebx, ebx
mov bl, al
jmp 0x4c55a5
mov edi, dword [ebp - 0x54]
test edi, edi
je case.0x4c54fa.0
mov esi, dword [ebp - 0x58]
test esi, esi
je case.0x4c54fa.0
cmp ebx, 0xb
je 0x4c58b2
cmp ebx, 4
je 0x4c58b2
cmp ebx, 5
je 0x4c58b2
cmp ebx, 6
je 0x4c58b2
cmp ebx, 7
je 0x4c58b2
cmp ebx, 8
je 0x4c58b2
cmp ebx, 0xa
je 0x4c58b2
cmp ebx, 9
jne case.0x4c54fa.0
mov ebx, dword [ebp - 0x54]
test byte [ebx + 0x18], 1
je 0x4c5c1f
mov eax, dword [ebp - 0x58]
test byte [eax + 0x18], 1
je 0x4c5f00
mov edx, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x58]
mov eax, dword [edx]
mov ecx, dword [ebx]
cmp eax, ecx
je 0x4c6146
sub eax, 4
xor edx, edx
cmp eax, 7
ja case.default.0x4c58ec
jmp dword [eax*4 + 0x54264c]
mov eax, dword [ebp - 0x54]
test eax, eax
je case.0x4c54fa.0
mov eax, dword [ebp - 0x58]
test eax, eax
je case.0x4c54fa.0
cmp ebx, 0x15
je 0x4c5917
cmp ebx, 0x1c
jne case.0x4c54fa.0
push edi
push edi
mov edx, dword [ebp - 0x58]
mov esi, dword [edx + 8]
push esi
mov ecx, dword [ebp - 0x54]
mov ebx, dword [ecx + 8]
push ebx
call fcn.004832e0
add esp, 0x10
test eax, eax
je 0x4c5b82
push ecx
push ecx
mov ebx, dword [ebp - 0x58]
mov edx, dword [ebx + 0xc]
push edx
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 0xc]
push eax
call fcn.004832e0
add esp, 0x10
test eax, eax
je 0x4c5b82
xor ebx, ebx
jmp 0x4c55a5
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je case.0x4c54fa.0
mov edx, dword [ebp - 0x58]
test edx, edx
je case.0x4c54fa.0
cmp ebx, 0x2b
jne case.0x4c54fa.0
mov ebx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebx + 0xc]
cmp dword [edx + 0xc], eax
jne 0x4c63bd
push eax
push eax
mov eax, dword [ebx + 8]
push eax
mov eax, dword [edx + 8]
push eax
call fcn.00483290
add esp, 0x10
cmp eax, 0
jg 0x4c56e0
jne 0x4c57c7
xor ebx, ebx
jmp 0x4c55a5
push 0x1325
push str.xmlschemastypes.c
push 0x5424fa
mov ebx, dword [0x61e0b0]
push ebx
call dword [0x5190a8]
mov ebx, 0xfffffffe
add esp, 0x10
jmp 0x4c55a5
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x54]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x4c4190
mov ecx, 1
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.004c4590
mov dl, 3
lea eax, [ecx - 4]
cmp eax, 7
jbe switch.0x004c5e60
xor eax, eax
xor ebx, ebx
xor eax, edx
xor ecx, ecx
mov cl, al
test cl, 1
jne 0x4c5b82
and ebx, 0xff
mov esi, ebx
test bl, 1
je 0x4c5a58
mov edx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x54]
mov eax, dword [edx + 8]
cmp dword [ebx + 8], eax
jl 0x4c57c7
jg 0x4c56e0
test cl, 2
jne 0x4c5b82
test esi, 2
je 0x4c5a94
mov eax, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x58]
mov dl, byte [eax + 0xc]
mov al, byte [ebx + 0xc]
and edx, 0xf
and eax, 0xf
and edx, 0xff
and eax, 0xff
cmp edx, eax
jl 0x4c57c7
jg 0x4c56e0
test cl, 4
jne 0x4c5b82
test esi, 4
je 0x4c5acd
mov eax, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x58]
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 0xc]
shr dx, 4
shr ax, 4
and edx, 0x1f
and eax, 0x1f
cmp edx, eax
jl 0x4c57c7
jg 0x4c56e0
and ecx, 8
jne 0x4c5b82
xor ebx, ebx
and esi, 8
je 0x4c55a5
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x58]
mov dl, byte [eax + 0xd]
mov al, byte [ecx + 0xd]
shr dl, 1
shr al, 1
and edx, 0x1f
and eax, 0x1f
cmp edx, eax
jl 0x4c57c7
jg 0x4c56e0
mov ebx, dword [ebp - 0x54]
mov eax, dword [ecx + 0xc]
shr eax, 0xe
mov edx, dword [ebx + 0xc]
and eax, 0x3f
shr edx, 0xe
and edx, 0x3f
cmp edx, eax
jl 0x4c57c7
jg 0x4c56e0
fld qword [ebx + 0x10]
fld qword [ecx + 0x10]
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4c6663
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
sete al
xor ebx, ebx
mov bl, al
jmp 0x4c55a5
mov dl, 6
jmp case.default.0x4c58ec
mov dl, 0xf
jmp case.default.0x4c58ec
mov dl, 8
jmp case.default.0x4c58ec
mov dl, 2
jmp case.default.0x4c58ec
mov dl, 1
jmp case.default.0x4c58ec
mov dl, 7
jmp case.default.0x4c58ec
cmp edi, esi
jl 0x4c55a5
mov ebx, 2
jmp 0x4c55a5
cmp cl, 0x20
je 0x4c5ba5
lea eax, [ecx - 9]
cmp al, 1
jbe 0x4c5ba5
cmp cl, 0xd
jne 0x4c61cb
mov ecx, dword [ebp - 0x4c]
inc ecx
mov dword [ebp - 0x4c], ecx
mov cl, byte [ebx + 1]
test cl, cl
je 0x4c5ebb
mov eax, dword [ebp - 0x4c]
inc ebx
mov dl, byte [eax]
test dl, dl
jne 0x4c56a0
jmp 0x4c56e0
cmp cl, 0xd
je 0x4c56cd
xor eax, eax
and edx, 0xff
mov al, cl
sub eax, edx
cmp eax, 0
jl 0x4c57c7
je 0x4c5ba5
jmp 0x4c56e0
cmp esi, 1
jne 0x4c6130
push edi
push edi
mov esi, dword [ebp - 0x4c]
push esi
mov ebx, dword [ebp - 0x50]
push ebx
call fcn.004832e0
add esp, 0x10
test eax, eax
je 0x4c5b82
xor ebx, ebx
jmp 0x4c55a5
mov edx, dword [ebp - 0x58]
test byte [edx + 0x18], 1
je 0x4c58cc
mov eax, edx
push ecx
push ecx
push 0
push 0
call fcn.004c4aa0
mov edi, eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
and ebx, 0x1f
lea esi, [ebx + eax]
pop eax
pop edx
push 0xc0e89c00
push 0
mov eax, dword [ebp - 0x54]
call fcn.004c4aa0
mov dword [ebp - 0x28], eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
add esp, 0x10
and ebx, 0x1f
add ebx, eax
mov dword [ebp - 0x2c], ebx
cmp esi, ebx
jg 0x4c6224
cmp dword [ebp - 0x2c], esi
jne 0x4c621b
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebx + 0xc]
shr ecx, 0xe
and ecx, 0x3f
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [ebx + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [ebx + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
push ecx
mov ecx, dword [edi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
fild dword [esp]
fadd qword [ebx + 0x10]
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [edi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
mov dword [esp], ecx
fild dword [esp]
fadd qword [edi + 0x10]
add esp, 4
fsubp st(1)
fldz
fucompp
fnstsw ax
test ah, 0x45
je 0x4c6529
push eax
push eax
push 0x40e89c00
push 0
mov eax, dword [ebp - 0x54]
call fcn.004c4aa0
mov esi, eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
add esp, 0x10
and ebx, 0x1f
add ebx, eax
cmp dword [ebp - 0x2c], ebx
jl 0x4c5e31
jne 0x4c63eb
mov ecx, dword [esi + 0xc]
mov ebx, 2
shr ecx, 0xe
and ecx, 0x3f
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [esi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [esi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
push ecx
mov ecx, dword [edi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
fild dword [esp]
fadd qword [esi + 0x10]
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [edi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
mov dword [esp], ecx
fild dword [esp]
fadd qword [edi + 0x10]
add esp, 4
fsubp st(1)
fldz
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x4c5e36
mov ebx, 1
sub esp, 0xc
mov eax, dword [ebp - 0x28]
push eax
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
mov dword [esp], esi
call fcn.004c3af0
add esp, 0x10
jmp 0x4c55a5
jmp dword [eax*4 + 0x54266c]
mov bl, dl
mov al, 3
and ebx, 3
jmp 0x4c5a24
mov bl, dl
mov al, 1
and ebx, 1
jmp 0x4c5a24
mov bl, dl
mov al, 6
and ebx, 6
jmp 0x4c5a24
mov bl, dl
mov al, 2
and ebx, 2
jmp 0x4c5a24
mov bl, dl
mov al, 0xf
and ebx, 0xf
jmp 0x4c5a24
mov bl, dl
mov al, 8
and ebx, 8
jmp 0x4c5a24
mov bl, dl
mov al, 7
and ebx, 7
jmp 0x4c5a24
mov edx, dword [ebp - 0x4c]
xor ebx, ebx
cmp byte [edx], 0
je 0x4c55a5
jmp 0x4c57c7
cmp edi, 3
jne case.0x4c54fa.0
cmp esi, 1
je 0x4c650c
cmp esi, 2
jne 0x4c640f
mov ecx, 1
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.004c46e0
mov eax, ebx
push ecx
push ecx
push 0
push 0
call fcn.004c4aa0
mov esi, eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
and ebx, 0x1f
add ebx, eax
mov dword [ebp - 0x40], ebx
pop eax
pop edx
push 0x40e89c00
push 0
mov eax, dword [ebp - 0x58]
call fcn.004c4aa0
mov edi, eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
add esp, 0x10
and ebx, 0x1f
add ebx, eax
cmp dword [ebp - 0x40], ebx
jl 0x4c61e6
jne 0x4c6202
mov ecx, dword [esi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [esi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [esi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
push ecx
mov ecx, dword [edi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
fild dword [esp]
fadd qword [esi + 0x10]
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [edi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
mov dword [esp], ecx
fild dword [esp]
fadd qword [edi + 0x10]
add esp, 4
fsubp st(1)
fldz
fucompp
fnstsw ax
test ah, 0x45
je 0x4c61e6
push eax
push eax
push 0xc0e89c00
push 0
mov eax, dword [ebp - 0x58]
call fcn.004c4aa0
mov dword [ebp - 0x3c], eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
add esp, 0x10
and ebx, 0x1f
add ebx, eax
cmp dword [ebp - 0x40], ebx
jg 0x4c6108
jne 0x4c63c8
mov ecx, dword [esi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [esi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [esi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
push ecx
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [eax + 0xc]
shr ecx, 0xe
and ecx, 0x3f
fild dword [esp]
fadd qword [esi + 0x10]
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edx + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [ebx + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
mov dword [esp], ecx
fild dword [esp]
fadd qword [ebx + 0x10]
add esp, 4
mov ebx, 2
fsubp st(1)
fldz
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x4c610d
mov ebx, 1
sub esp, 0xc
push esi
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
pop edi
mov esi, dword [ebp - 0x3c]
push esi
call fcn.004c3af0
add esp, 0x10
jmp 0x4c55a5
cmp esi, 2
jne 0x4c6301
xor ecx, ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
jmp 0x4c5a06
mov eax, ebx
push ecx
push ecx
push 0
push 0
call fcn.004c4aa0
mov dword [ebp - 0x24], eax
mov esi, dword [eax + 0xc]
call fcn.004c4430
shr si, 4
and esi, 0x1f
add esi, eax
pop eax
pop edx
push 0
push 0
mov eax, dword [ebp - 0x54]
call fcn.004c4aa0
mov edi, eax
mov ebx, dword [eax + 0xc]
call fcn.004c4430
shr bx, 4
add esp, 0x10
and ebx, 0x1f
add ebx, eax
cmp esi, ebx
jg 0x4c61e1
jge 0x4c622d
mov ebx, 1
sub esp, 0xc
push edi
call fcn.004c3af0
pop eax
mov eax, dword [ebp - 0x24]
push eax
call fcn.004c3af0
add esp, 0x10
jmp 0x4c55a5
cmp esi, 3
jne case.0x4c54fa.0
xor ecx, ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
jmp 0x4c5ef4
xor eax, eax
mov al, cl
cmp eax, 0x1f
jle 0x4c57c7
jmp 0x4c56e0
fstp st(0)
fstp st(0)
or ebx, 0xffffffff
jmp 0x4c619a
sub esp, 0xc
push esi
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
or ebx, 0xffffffff
add esp, 0x10
jmp 0x4c55a5
sub esp, 0xc
push esi
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
add esp, 0x10
jmp 0x4c58cc
sub esp, 0xc
mov ebx, dword [ebp - 0x28]
push ebx
jmp 0x4c6206
sub esp, 0xc
mov eax, dword [ebp - 0x28]
push eax
jmp 0x4c61ea
mov ecx, dword [edi + 0xc]
shr ecx, 0xe
and ecx, 0x3f
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edi + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [edi + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
push ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x24]
mov ecx, dword [eax + 0xc]
shr ecx, 0xe
and ecx, 0x3f
fild dword [esp]
fadd qword [edi + 0x10]
lea eax, [ecx*4]
shl ecx, 6
sub ecx, eax
mov al, byte [edx + 0xd]
shr al, 1
and eax, 0x1f
mov edx, eax
shl edx, 4
shl eax, 8
sub eax, edx
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [ebx + 0x18]
shl eax, 3
add ecx, edx
sar ax, 4
cwde
lea edx, [eax*4]
shl eax, 6
sub eax, edx
add ecx, eax
mov dword [esp], ecx
fild dword [esp]
fadd qword [ebx + 0x10]
add esp, 4
fsubp st(1)
fldz
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4c61dd
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
sete al
xor ebx, ebx
mov bl, al
jmp 0x4c619a
cmp esi, 3
jne case.0x4c54fa.0
xor ecx, ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.004c4610
jle 0x4c657e
test edi, edi
js 0x4c6601
fldz
fxch st(1)
fucompp
fnstsw ax
test ah, 5
je 0x4c56e0
neg edi
mov ebx, 1
mov eax, esi
mov edx, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, esi
sar eax, 0x1f
sub edx, eax
mov dword [ebp - 0x44], edx
jne 0x4c653d
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x48], 0
mov edx, esi
mov ecx, 0xc
sar edx, 0x1f
mov eax, esi
idiv ecx
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x7c], edx
mov eax, dword [edx*4 + 0x542f00]
mov ecx, dword [edx*4 + 0x542f30]
add esi, eax
mov eax, dword [ebp - 0x8c]
add eax, ecx
cmp eax, esi
je 0x4c65f2
cmp edi, eax
jle 0x4c5b7a
neg ebx
jmp 0x4c55a5
push 0x12a8
jmp 0x4c59c5
ja 0x4c56e0
jmp 0x4c57c7
sub esp, 0xc
push esi
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
pop ecx
mov edx, dword [ebp - 0x3c]
push edx
call fcn.004c3af0
add esp, 0x10
jmp 0x4c58cc
sub esp, 0xc
mov eax, dword [ebp - 0x28]
push eax
call fcn.004c3af0
mov dword [esp], edi
call fcn.004c3af0
mov dword [esp], esi
call fcn.004c3af0
add esp, 0x10
jmp 0x4c58cc
cmp esi, 3
jne case.0x4c54fa.0
jmp 0x4c6427
mov edx, dword [ebp - 0x50]
inc edx
mov dword [ebp - 0x50], edx
mov ebx, dword [ebp - 0x50]
mov cl, byte [ebx]
mov bl, cl
cmp cl, 0x20
je 0x4c6420
lea eax, [ecx - 9]
cmp al, 1
jbe 0x4c6420
cmp cl, 0xd
je 0x4c6420
jmp 0x4c6448
mov eax, dword [ebp - 0x4c]
inc eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x4c]
mov dl, byte [eax]
cmp dl, 0x20
je 0x4c6441
lea eax, [edx - 9]
cmp al, 1
jbe 0x4c6441
cmp dl, 0xd
je 0x4c6441
jmp 0x4c649a
cmp bl, 0xd
je 0x4c64b6
xor eax, eax
and edx, 0xff
mov al, bl
sub eax, edx
cmp eax, 0
jl 0x4c57c7
jne 0x4c56e0
mov eax, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x4c]
inc eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x50]
mov bl, byte [eax]
mov eax, dword [ebp - 0x4c]
mov cl, bl
mov dl, byte [eax]
test bl, bl
je 0x4c6633
test dl, dl
je 0x4c6608
cmp bl, 0x20
je 0x4c64b6
lea eax, [ebx - 9]
cmp al, 1
ja 0x4c6460
cmp dl, 0x20
je 0x4c64dc
lea eax, [edx - 9]
cmp al, 1
jbe 0x4c64dc
cmp dl, 0xd
je 0x4c64dc
jmp 0x4c66a2
mov eax, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x50]
mov bl, byte [ecx]
cmp bl, 0x20
je 0x4c64d0
lea eax, [ebx - 9]
cmp al, 1
jbe 0x4c64d0
cmp bl, 0xd
je 0x4c64d0
mov ecx, dword [ebp - 0x4c]
jmp 0x4c64f6
mov dl, byte [ecx + 1]
inc ecx
mov dword [ebp - 0x4c], ecx
cmp dl, 0x20
je 0x4c64f2
lea eax, [edx - 9]
cmp al, 1
jbe 0x4c64f2
cmp dl, 0xd
je 0x4c64f2
jmp 0x4c6493
mov ecx, 1
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
jmp 0x4c6312
fstp st(0)
jge 0x4c56e0
jmp 0x4c57c7
sub esp, 0xc
push ebx
jmp 0x4c61ea
fld qword [edx + 8]
fstp qword [ebp - 0x38]
jmp 0x4c5811
mov eax, dword [ebp - 0x44]
dec eax
mov edx, eax
sar edx, 0x1f
shr edx, 0x1e
add eax, edx
and eax, 3
sub eax, edx
mov edx, dword [ebp - 0x44]
add edx, 3
sar edx, 2
lea ecx, [eax + eax*8]
lea ecx, [eax + ecx*8]
lea eax, [edx + edx*8]
lea eax, [edx + eax*8]
lea ecx, [ecx + ecx*4]
lea eax, [eax + eax*4]
add eax, edx
add ecx, eax
mov dword [ebp - 0x8c], ecx
dec ecx
mov dword [ebp - 0x48], ecx
jmp 0x4c6370
test edi, edi
jle 0x4c66b3
fstp st(0)
neg esi
or ebx, 0xffffffff
jmp 0x4c6344
fld qword [edx + 8]
jmp 0x4c582e
fstp st(0)
fstp st(0)
xor ebx, ebx
jmp 0x4c55a5
sub esp, 0x10
fst qword [esp]
fstp qword [ebp - 0x68]
call fcn.004719a0
add esp, 0x10
fld qword [ebp - 0x68]
test eax, eax
jne 0x4c6665
fld qword [0x519210]
fld qword [ebp - 0x38]
fucomp st(1)
fnstsw ax
and ah, 0x45
xor ah, 0x40
jne 0x4c666c
fxch st(1)
fucompp
fnstsw ax
and ah, 0x45
cmp ah, 0x40
setne al
xor ebx, ebx
mov bl, al
jmp 0x4c55a5
cmp esi, edi
jne 0x4c63a4
xor ebx, ebx
jmp 0x4c55a5
fstp st(0)
jmp 0x4c633d
mov edx, dword [ebp - 0x50]
jmp 0x4c6614
mov cl, byte [edx + 1]
inc edx
cmp cl, 0x20
je 0x4c6610
lea eax, [ecx - 9]
cmp al, 1
jbe 0x4c6610
cmp cl, 0xd
je 0x4c6610
test cl, cl
setne al
xor ebx, ebx
mov bl, al
jmp 0x4c55a5
mov ecx, dword [ebp - 0x4c]
test dl, dl
jne 0x4c6643
jmp 0x4c5957
mov dl, byte [ecx + 1]
inc ecx
cmp dl, 0x20
je 0x4c663f
lea eax, [edx - 9]
cmp al, 1
jbe 0x4c663f
cmp dl, 0xd
je 0x4c663f
test dl, dl
jne 0x4c57c7
xor ebx, ebx
jmp 0x4c55a5
fstp st(0)
fstp st(0)
jmp 0x4c57c7
fxch st(1)
fucom st(1)
fnstsw ax
fstp st(1)
and ah, 0x45
cmp ah, 0x40
je 0x4c6665
fld qword [0x519218]
fld qword [ebp - 0x38]
fucomp st(1)
fnstsw ax
and ah, 0x45
xor ah, 0x40
jne 0x4c66c7
fxch st(1)
fucompp
fnstsw ax
and ah, 0x45
cmp ah, 0x40
jmp 0x4c59ac
xor eax, eax
and ebx, 0xff
mov al, dl
sub ebx, eax
jmp 0x4c55a5
fldz
fucompp
fnstsw ax
test ah, 5
je 0x4c57c7
jmp 0x4c6588
fxch st(1)
fucom st(1)
fnstsw ax
fstp st(1)
and ah, 0x45
cmp ah, 0x40
je 0x4c6710
fld qword [ebp - 0x38]
fxch st(1)
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4c6663
fxch st(1)
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4c670e
fucompp
fnstsw ax
and ah, 0x45
xor ah, 0x40
mov ebx, 2
jne 0x4c55a5
jmp 0x4c5957
fstp st(0)
fstp st(0)
jmp 0x4c56e0