Function at 0x446430
Capabilities:
Authenticate hmac
Encode data using base64
Encrypt data using speck
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xd8
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax]
mov eax, dword [esp + 0xe0]
push ebx
push ebp
push esi
mov esi, dword [eax]
mov eax, dword [esp + 0xf0]
push edi
mov edi, dword [eax]
mov eax, ecx
shr eax, 0xb
and eax, 1
mov dword [esp + 0x3c], eax
mov eax, ecx
shr eax, 9
xor edx, edx
and eax, 1
mov dword [esp + 0x2c], ecx
mov dword [esp + 0xc0], eax
xor eax, 1
and ecx, 1
xor ebp, ebp
shl ecx, 8
mov dword [esp + 0xc4], eax
mov eax, 0xfffffffe
mov dword [esp + 0x74], ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x30], edx
mov dword [esp + 0xa4], edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0xb4], esi
mov dword [esp + 0x58], edx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], eax
mov ecx, esi
mov eax, dword [esp + 0x108]
cmp dword [esp + 0x10c], edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x10], edi
movzx ebx, byte [edi]
je 0x446591
add edx, 0x1000
cmp esi, edx
ja 0x4495de
cmp esi, ecx
jae 0x446512
mov dword [esp + 0x14], ecx
mov esi, ecx
mov eax, dword [esp + 0x10c]
mov eax, dword [eax]
mov ecx, esi
sub ecx, dword [esp + 0x70]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x449601
sub eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x10c]
add eax, esi
test ebp, ebp
mov dword [ecx], eax
je 0x44657e
cmp ebp, dword [esp + 0xb4]
jbe 0x44658b
mov edi, dword [esp + 0xb4]
mov edx, esi
sub edx, ebp
push edx
push ebp
push edi
call sub.MSVCRT.dll_memmove
mov eax, edi
sub eax, ebp
add esp, 0xc
add esi, eax
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x70], esi
jmp 0x4465a0
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x14], ecx
mov esi, ecx
mov dword [esp + 0x70], esi
jmp 0x4465a0
add edx, 0x1000
cmp dword [eax + 0x20], edx
ja 0x449624
xor ecx, ecx
cmp dword [esp + 0x58], ecx
je 0x4466fc
cmp ebx, ecx
je 0x4466fc
cmp ebx, 0x5c
jne 0x4465d4
cmp byte [edi + 1], 0x45
jne 0x4465d4
add edi, 1
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
mov ebp, dword [esp + 0x60]
cmp ebp, ecx
je 0x44660e
cmp dword [esp + 0x10c], ecx
jne 0x44660a
xor edx, edx
mov dh, byte [ebp + 2]
mov eax, edi
mov dl, byte [ebp + 3]
sub eax, edx
mov edx, dword [esp + 0x108]
sub eax, dword [edx + 0x18]
mov edx, eax
sar edx, 8
mov byte [ebp + 4], dl
mov byte [ebp + 5], al
mov edi, dword [esp + 0x10]
mov dword [esp + 0x60], ecx
test dword [esp + 0x2c], 0x4000
je case.0x446887.1
mov byte [esi], 0x53
mov byte [esi + 1], 0xff
mov eax, edi
mov edi, dword [esp + 0x108]
mov dword [esp + 0x60], esi
add esi, 1
mov ecx, eax
sub ecx, dword [edi + 0x18]
add esi, 1
sar ecx, 8
mov byte [esi], cl
sub al, byte [edi + 0x18]
mov byte [esi + 2], 0
mov byte [esi + 1], al
mov byte [esi + 3], 0
mov edi, dword [esp + 0x10]
add esi, 4
mov dword [esp + 0x14], esi
cmp dword [esp + 0x3c], 0
mov eax, 1
mov byte [esp + 0xac], bl
je 0x44669d
cmp ebx, 0xc0
jl 0x44669d
mov dl, byte [edi + eax]
add edi, eax
and dl, 0xc0
cmp dl, 0x80
jne 0x44669d
lea ecx, [ecx]
mov dword [esp + 0x10], edi
mov cl, byte [edi]
add edi, 1
mov byte [esp + eax + 0xac], cl
mov dl, byte [edi]
and dl, 0xc0
add eax, 1
cmp dl, 0x80
je 0x446680
mov cl, byte [esp + 0x2c]
and cl, 1
or cl, 0x1c
mov byte [esi], cl
mov dword [esp + 0x18], esi
add esi, 1
xor ecx, ecx
test eax, eax
mov dword [esp + 0x14], esi
jle 0x4466d7
lea ebx, [ebx]
mov dl, byte [esp + ecx + 0xac]
mov byte [esi], dl
add ecx, 1
add esi, 1
cmp ecx, eax
jl 0x4466c0
mov dword [esp + 0x14], esi
mov cl, byte [esp + 0xac]
cmp cl, 0xd
je 0x4466ec
cmp cl, 0xa
jne 0x44950d
mov edi, dword [esp + 0x108]
or dword [edi + 0x44], 0x20
jmp 0x449514
cmp ebx, 0x2a
je 0x44688e
cmp ebx, 0x2b
je 0x44688e
cmp ebx, 0x3f
je 0x44688e
cmp ebx, 0x7b
jne 0x44672c
lea eax, [edi + 1]
call fcn.00444cd0
test eax, eax
jne 0x44688e
xor ecx, ecx
cmp dword [esp + 0x60], ecx
mov dword [esp + 0x38], ecx
je 0x44678f
mov eax, dword [esp + 0xa4]
mov edx, eax
sub eax, 1
test edx, edx
mov dword [esp + 0xa4], eax
jg 0x44678f
cmp dword [esp + 0x10c], ecx
jne 0x446787
mov eax, dword [esp + 0x60]
xor edx, edx
mov dh, byte [eax + 2]
mov dl, byte [eax + 3]
mov eax, edi
mov edi, dword [esp + 0x60]
sub eax, edx
mov edx, dword [esp + 0x108]
sub eax, dword [edx + 0x18]
mov edx, eax
sar edx, 8
mov byte [edi + 4], dl
mov edx, edi
mov byte [edx + 5], al
mov edi, dword [esp + 0x10]
mov dword [esp + 0x60], 0
test byte [esp + 0x2c], 8
mov edx, dword [esp + 0x108]
je 0x44682c
mov eax, dword [edx + 0xc]
test byte [ebx + eax], 1
jne 0x447643
cmp ebx, 0x23
jne 0x44682c
add edi, 1
mov dword [esp + 0x10], edi
mov al, byte [edi]
test al, al
je 0x446823
mov edx, dword [esp + 0x108]
mov ecx, dword [edx + 0x50]
test ecx, ecx
je 0x44689c
mov eax, dword [edx + 0x1c]
cmp edi, eax
jae 0x4468c4
mov edx, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0x10c]
add edx, 0x54
push edx
push eax
push ecx
push edi
call fcn.00451f80
mov edi, dword [esp + 0x24]
add esp, 0x14
test eax, eax
je 0x4468c4
mov edx, dword [esp + 0x108]
mov eax, dword [edx + 0x54]
lea edi, [edi + eax - 1]
mov dword [esp + 0x10], edi
cmp byte [edi], 0
jne 0x447643
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x108]
xor ebx, ebx
test dword [esp + 0x2c], 0x4000
je 0x446877
test ecx, ecx
jne 0x446877
mov byte [esi], 0x53
mov byte [esi + 1], 0xff
mov eax, edi
mov edi, dword [esp + 0x108]
mov dword [esp + 0x60], esi
add esi, 1
mov edx, eax
sub edx, dword [edi + 0x18]
add esi, 1
sar edx, 8
mov byte [esi], dl
mov edx, edi
sub al, byte [edx + 0x18]
mov byte [esi + 2], cl
mov byte [esi + 1], al
mov byte [esi + 3], cl
mov edi, dword [esp + 0x10]
add esi, 4
mov dword [esp + 0x14], esi
cmp ebx, 0x7c
ja case.0x446887.1
movzx eax, byte [ebx + 0x449b04]
jmp dword [eax*4 + 0x449ad0]
mov ecx, 1
mov dword [esp + 0x38], ecx
jmp 0x44678f
mov ecx, dword [edx + 0x54]
mov ebx, dword [edx + 0x1c]
sub ebx, ecx
cmp edi, ebx
ja 0x4468c4
cmp al, byte [edx + 0x58]
jne 0x4468c4
cmp ecx, 1
je 0x446804
mov al, byte [edi + 1]
mov ecx, edx
cmp al, byte [ecx + 0x59]
je 0x446804
add edi, 1
mov dword [esp + 0x10], edi
mov al, byte [edi]
test al, al
jne 0x4467c0
jmp 0x44681f
test byte [esp + 0x2c], 2
je 0x4468f0
cmp dword [esp + 0x34], 0xfffffffe
jne 0x4468f0
mov dword [esp + 0x34], 0xffffffff
mov ecx, dword [esp + 0x70]
mov byte [esi], 0x1a
mov edi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
mov ecx, dword [esp + 0x70]
mov byte [esi], 0x1b
mov edi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x446950
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
shr edx, 2
and dl, 1
or dl, 0xc
mov byte [esi], dl
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], esi
mov ebp, dword [esp + 0x18]
add esi, 1
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x54], eax
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
test dword [edx + 0x40], 0x2000000
je case.0x446887.1
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x40
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov al, byte [edi + 1]
cmp al, 0x3a
mov dword [esp + 0x18], esi
je 0x4469cf
cmp al, 0x2e
je 0x4469cf
cmp al, 0x3d
jne 0x4469ed
lea eax, [esp + 0x9c]
push eax
mov eax, edi
call fcn.004459b0
mov edi, dword [esp + 0x14]
add esp, 4
test eax, eax
jne 0x4496cc
xor ebp, ebp
mov dword [esp + 0x1c], ebp
add edi, 1
mov dword [esp + 0x10], edi
movzx ebx, byte [edi]
cmp ebx, 0x5c
jne 0x446a27
add edi, 1
cmp byte [edi], 0x45
je 0x4469f3
push 3
push 0x483ca8
push edi
call sub.MSVCRT.dll_strncmp
mov edi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x446a8c
add edi, 3
jmp 0x4469f3
test ebp, ebp
jne 0x446a35
cmp ebx, 0x5e
jne 0x446a35
lea ebp, [ebx - 0x5d]
jmp 0x4469ef
cmp ebx, 0x5d
jne 0x446a8c
mov ecx, dword [esp + 0x108]
test dword [ecx + 0x40], 0x2000000
je 0x446a8c
mov edx, ebp
neg edx
sbb dl, dl
and dl, 0xa0
add dl, 0x6d
mov byte [esi], dl
add esi, 1
cmp dword [esp + 0x34], 0xfffffffe
mov dword [esp + 0x14], esi
jne 0x446a6e
mov dword [esp + 0x34], 0xffffffff
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x54], eax
xor edx, edx
jmp 0x4464dc
xor eax, eax
test ebx, ebx
lea ebp, [esi + 4]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x54], 0xffffffff
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x4c], ebp
je 0x44975e
cmp dword [esp + 0x3c], 0
je 0x446b51
cmp ebx, 0x7f
jle 0x446b51
movzx ebx, byte [edi]
cmp ebx, 0xc0
jl 0x446b51
mov ecx, ebx
and ecx, 0x3f
movzx edx, byte [ecx + 0x483de0]
mov eax, dword [edx*4 + 0x483dc4]
lea esi, [edx + edx*2]
add esi, esi
and eax, ebx
mov ecx, esi
shl eax, cl
mov dword [esp + 0x50], edx
mov ebx, eax
mov eax, 1
cmp edx, eax
jl 0x446b4b
jmp 0x446b30
movzx edx, byte [eax + edi]
sub esi, 6
and edx, 0x3f
mov ecx, esi
shl edx, cl
add eax, 1
or ebx, edx
mov edx, dword [esp + 0x50]
cmp eax, edx
jle 0x446b30
add edi, edx
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x10c]
test esi, esi
je 0x446b66
mov eax, ebp
mov ebp, dword [esp + 0x4c]
sub eax, ebp
add dword [esi], eax
cmp dword [esp + 0x58], 0
je 0x446b90
cmp ebx, 0x5c
jne 0x446d65
cmp byte [edi + 1], 0x45
jne 0x446d65
mov dword [esp + 0x58], 0
add edi, 1
jmp 0x447020
cmp ebx, 0x5b
jne 0x446d1a
mov al, byte [edi + 1]
cmp al, 0x3a
je 0x446bac
cmp al, 0x2e
je 0x446bac
cmp al, 0x3d
jne 0x446d65
lea ecx, [esp + 0x9c]
push ecx
mov eax, edi
call fcn.004459b0
add esp, 4
test eax, eax
je 0x446d61
mov edx, dword [esp + 0x108]
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x3a
mov eax, dword [edx + 8]
mov dword [esp + 0x38], 0
mov dword [esp + 0x50], eax
jne 0x4496fb
add edi, 2
mov dword [esp + 0x10], edi
cmp byte [edi], 0x5e
jne 0x446c09
mov eax, 1
add edi, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], edi
mov ebx, dword [esp + 0x9c]
sub ebx, edi
push edi
call fcn.00445a00
add esp, 4
test eax, eax
jl 0x44971e
test byte [esp + 0x2c], 1
je 0x446c31
cmp eax, 2
jg 0x446c31
xor eax, eax
mov edx, dword [esp + 0x50]
lea eax, [eax + eax*2]
mov esi, dword [eax*4 + 0x4831d0]
add esi, edx
mov ecx, 8
lea edi, [esp + 0xc8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax*4 + 0x4831d4]
test ecx, ecx
mov esi, dword [eax*4 + 0x4831d8]
jl 0x446c98
xor eax, eax
add ecx, edx
test esi, esi
jl 0x446c84
lea esp, [esp]
mov dl, byte [ecx + eax]
or byte [esp + eax + 0xc8], dl
add eax, 1
cmp eax, 0x20
jl 0x446c70
jmp 0x446c98
mov dl, byte [ecx + eax]
not dl
and byte [esp + eax + 0xc8], dl
add eax, 1
cmp eax, 0x20
jl 0x446c84
test esi, esi
jge 0x446c9e
neg esi
cmp esi, 1
jne 0x446cad
and byte [esp + 0xc9], 0xc3
jmp 0x446cba
cmp esi, 2
jne 0x446cba
and byte [esp + 0xd3], 0x7f
xor eax, eax
cmp dword [esp + 0x38], eax
je 0x446cf0
mov cl, byte [esp + eax + 0xc8]
not cl
or byte [esp + eax + 0x78], cl
add eax, 1
cmp eax, 0x20
jl 0x446cc2
mov edi, dword [esp + 0x9c]
add edi, 1
mov dword [esp + 0x24], 0xa
jmp 0x447020
mov dl, byte [esp + eax + 0xc8]
or byte [esp + eax + 0x78], dl
add eax, 1
cmp eax, 0x20
jl 0x446cf0
mov edi, dword [esp + 0x9c]
add edi, 1
mov dword [esp + 0x24], 0xa
jmp 0x447020
cmp ebx, 0x5c
jne 0x446d65
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x108]
mov edx, dword [ecx + 0x30]
mov edi, dword [esp + 0xf8]
push 1
push eax
push edx
lea eax, [esp + 0x1c]
push edi
push eax
call fcn.00444810
add esp, 0x14
cmp dword [edi], 0
mov ebx, eax
jne 0x44832c
mov ecx, ebx
neg ecx
cmp ecx, 5
jne 0x446ddf
lea ebx, [ecx + 3]
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x5c
mov eax, dword [esp + 0x58]
jne 0x446d89
nop
cmp byte [edi + 2], 0x45
jne 0x446d85
add edi, 2
xor eax, eax
mov dword [esp + 0x10], edi
cmp byte [edi + 1], 0x5c
je 0x446d70
mov dword [esp + 0x58], eax
cmp ebx, 0xd
mov dword [esp + 0x5c], edi
je 0x446d97
cmp ebx, 0xa
jne 0x446da2
mov ecx, dword [esp + 0x108]
or dword [ecx + 0x44], 0x20
test eax, eax
jne 0x447570
cmp byte [edi + 1], 0x2d
jne 0x447570
add edi, 2
mov dword [esp + 0x10], edi
cmp byte [edi], 0x5c
jne 0x447373
cmp byte [edi + 1], 0x45
jne 0x447340
add edi, 2
mov dword [esp + 0x10], edi
cmp byte [edi], 0x5c
je 0x446dc4
jmp 0x447373
cmp ecx, 0x16
jne 0x446dec
lea ebx, [ecx + 0x42]
jmp 0x446d61
cmp ecx, 0x11
jne 0x446df9
lea ebx, [ecx + 0x41]
jmp 0x446d61
cmp ecx, 0x1a
jne 0x446e23
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x5c
jne 0x446e16
cmp byte [edi + 2], 0x45
jne 0x446e16
add edi, 2
jmp 0x447020
mov dword [esp + 0x58], 1
jmp 0x447020
cmp ecx, 0x19
je 0x44701c
test ebx, ebx
jge 0x446d61
mov edx, dword [esp + 0x108]
add dword [esp + 0x24], 2
test esi, esi
mov eax, dword [edx + 8]
jne 0x446f30
lea edx, [ecx - 6]
cmp edx, 5
ja case.default.0x446e57
jmp dword [edx*4 + 0x449b84]
xor ecx, ecx
mov dl, byte [eax + ecx + 0x40]
or byte [esp + ecx + 0x78], dl
add ecx, 1
cmp ecx, 0x20
jl 0x446e60
jmp 0x44701c
mov dword [esp + 0x20], 1
xor ecx, ecx
nop
mov dl, byte [eax + ecx + 0x40]
not dl
or byte [esp + ecx + 0x78], dl
add ecx, 1
cmp ecx, 0x20
jl 0x446e80
jmp 0x44701c
xor ecx, ecx
lea esp, [esp]
mov dl, byte [eax + ecx + 0xa0]
or byte [esp + ecx + 0x78], dl
add ecx, 1
cmp ecx, 0x20
jl 0x446ea0
jmp 0x44701c
mov dword [esp + 0x20], 1
xor ecx, ecx
mov dl, byte [eax + ecx + 0xa0]
not dl
or byte [esp + ecx + 0x78], dl
add ecx, 1
cmp ecx, 0x20
jl 0x446ec2
jmp 0x44701c
mov esi, eax
lea eax, [esp + 0x78]
xor edx, edx
sub esi, eax
lea ecx, [esp + edx + 0x78]
mov al, byte [ecx + esi]
or byte [ecx], al
add edx, 1
cmp edx, 0x20
jl 0x446ee6
and byte [esp + 0x79], 0xf7
jmp 0x44701c
mov esi, eax
lea ecx, [esp + 0x78]
xor edx, edx
mov dword [esp + 0x20], 1
sub esi, ecx
lea ecx, [esp + edx + 0x78]
mov al, byte [ecx + esi]
not al
or byte [ecx], al
add edx, 1
cmp edx, 0x20
jl 0x446f13
or byte [esp + 0x79], 8
jmp 0x44701c
cmp ebx, 0xfffffff9
je 0x44701c
cmp ebx, 0xfffffffa
je 0x44701c
cmp ebx, 0xfffffff5
je 0x44701c
cmp ebx, 0xfffffff6
je 0x44701c
cmp ebx, 0xfffffff7
je 0x44701c
cmp ebx, 0xfffffff8
je 0x44701c
cmp ecx, 0x13
jne 0x44710a
or byte [esp + 0x79], 2
or byte [esp + 0x7c], 1
or byte [esp + 0x8c], 1
cmp dword [esp + 0x3c], 0
je 0x44701c
mov byte [ebp], 1
add ebp, 1
push ebp
push 0x1680
mov dword [esp + 0x30], 1
call fcn.00452210
add ebp, eax
mov byte [ebp], 1
add ebp, 1
push ebp
push 0x180e
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x2000
call fcn.00452210
add ebp, eax
push ebp
push 0x200a
call fcn.00452210
add ebp, eax
mov byte [ebp], 1
add ebp, 1
push ebp
push 0x202f
call fcn.00452210
add ebp, eax
mov byte [ebp], 1
add ebp, 1
push ebp
push 0x205f
call fcn.00452210
add ebp, eax
mov byte [ebp], 1
add ebp, 1
push ebp
push 0x3000
call fcn.00452210
add esp, 0x38
add ebp, eax
mov edi, dword [esp + 0x10]
add edi, 1
mov dword [esp + 0x10], edi
movzx ebx, byte [edi]
test ebx, ebx
je 0x44975e
cmp ebx, 0x5d
jne 0x446ae3
cmp dword [esp + 0x58], 0
jne 0x446ae3
mov esi, dword [esp + 0x24]
cmp esi, 1
mov edx, dword [esp + 0x1c]
jne 0x44707e
cmp dword [esp + 0x28], 0
jne 0x44707e
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x447600
test edx, edx
je 0x447600
mov ecx, dword [esp + 0x54]
cmp ecx, 0x80
jl 0x447604
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x44708e
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x5c], eax
je 0x4476a8
cmp dword [esp + 0x20], 0
jne 0x4476a8
mov ecx, dword [esp + 0x14]
mov byte [ebp], 0
add ecx, 3
mov byte [ecx - 3], 0x50
add ebp, 1
test edx, edx
setne al
test esi, esi
mov dword [esp + 0x14], ecx
mov byte [ecx], al
jle 0x44768d
mov edi, ecx
or al, 2
mov byte [edi], al
add edi, 1
mov ecx, ebp
sub ecx, edi
push ecx
lea edx, [edi + 0x20]
push edi
push edx
call sub.MSVCRT.dll_memmove
mov ecx, 8
lea esi, [esp + 0x84]
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp + 0x20]
add esp, 0xc
mov dword [esp + 0x14], ecx
jmp 0x447693
cmp ecx, 0x12
jne 0x447246
xor eax, eax
mov ecx, eax
sub ecx, 1
mov edx, 0xff
je 0x447132
sub ecx, 3
je 0x44712b
sub ecx, 0x10
jne 0x447137
mov edx, 0xfe
jmp 0x447137
mov edx, 0xfd
or byte [esp + eax + 0x78], dl
add eax, 1
cmp eax, 0x20
jl 0x447115
cmp dword [esp + 0x3c], 0
je 0x44701c
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x100
mov dword [esp + 0x30], 1
call fcn.00452210
add ebp, eax
push ebp
push 0x167f
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x1681
call fcn.00452210
add ebp, eax
push ebp
push 0x180d
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x180f
call fcn.00452210
add ebp, eax
push ebp
push 0x1fff
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x200b
call fcn.00452210
add ebp, eax
push ebp
push 0x202e
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add esp, 0x40
add ebp, 1
push ebp
push 0x2030
call fcn.00452210
add ebp, eax
push ebp
push 0x205e
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x2060
call fcn.00452210
add ebp, eax
push ebp
push 0x2fff
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x3001
call fcn.00452210
add ebp, eax
push ebp
push 0x7fffffff
call fcn.00452210
add esp, 0x30
jmp 0x44701a
cmp ecx, 0x15
jne 0x447292
or byte [esp + 0x79], 0x3c
or byte [esp + 0x88], 0x20
cmp dword [esp + 0x3c], 0
je 0x44701c
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x2028
mov dword [esp + 0x30], 1
call fcn.00452210
add ebp, eax
push ebp
push 0x2029
call fcn.00452210
add esp, 0x10
jmp 0x44701a
cmp ecx, 0x14
jne 0x447324
xor eax, eax
lea ecx, [ecx]
mov ecx, eax
sub ecx, 1
mov edx, 0xff
je 0x4472b8
sub ecx, 0xf
jne 0x4472bd
mov edx, 0xdf
jmp 0x4472bd
mov edx, 0xc3
or byte [esp + eax + 0x78], dl
add eax, 1
cmp eax, 0x20
jl 0x4472a0
cmp dword [esp + 0x3c], 0
je 0x44701c
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x100
mov dword [esp + 0x30], 1
call fcn.00452210
add ebp, eax
push ebp
push 0x2027
call fcn.00452210
add ebp, eax
mov byte [ebp], 2
add ebp, 1
push ebp
push 0x2029
call fcn.00452210
add ebp, eax
push ebp
push 0x7fffffff
call fcn.00452210
add esp, 0x20
jmp 0x44701a
test byte [esp + 0x2c], 0x40
jne 0x449730
mov edi, dword [esp + 0x10]
sub dword [esp + 0x24], 2
movzx ebx, byte [edi]
jmp 0x446d65
cmp byte [edi], 0x5c
jne 0x447373
cmp byte [edi + 1], 0x51
jne 0x447373
add edi, 2
mov dword [esp + 0x10], edi
cmp byte [edi], 0x5c
jne 0x44736b
cmp byte [edi + 1], 0x45
jne 0x44736b
add edi, 2
mov dword [esp + 0x10], edi
cmp byte [edi], 0x5c
je 0x447345
jmp 0x447373
mov dword [esp + 0x58], 1
mov al, byte [edi]
test al, al
je 0x447568
cmp dword [esp + 0x58], 0
jne 0x44738c
cmp al, 0x5d
je 0x447568
cmp dword [esp + 0x3c], 0
movzx esi, al
je 0x4473f7
cmp esi, 0xc0
jl 0x4473f7
mov ecx, esi
and ecx, 0x3f
movzx eax, byte [ecx + 0x483de0]
mov edx, dword [eax*4 + 0x483dc4]
and edx, esi
lea ecx, [eax + eax*2]
add ecx, ecx
shl edx, cl
mov dword [esp + 0x50], eax
mov esi, edx
mov edx, 1
cmp eax, edx
mov dword [esp + 0x38], edx
jl 0x4473f1
lea ecx, [ecx]
movzx eax, byte [edx + edi]
mov edx, dword [esp + 0x38]
and eax, 0x3f
sub ecx, 6
shl eax, cl
add edx, 1
mov dword [esp + 0x38], edx
or esi, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jle 0x4473d0
add edi, eax
mov dword [esp + 0x10], edi
cmp dword [esp + 0x58], 0
jne 0x447461
cmp esi, 0x5c
jne 0x447461
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x108]
mov eax, dword [edx + 0x30]
mov edi, dword [esp + 0xf8]
push 1
push ecx
push eax
lea ecx, [esp + 0x1c]
push edi
push ecx
call fcn.00444810
add esp, 0x14
cmp dword [edi], 0
mov esi, eax
jne 0x44832c
test esi, esi
jge 0x44745d
cmp esi, 0xfffffffb
jne 0x447443
lea esi, [eax + 0xd]
jmp 0x44745d
cmp esi, 0xffffffea
jne 0x44744f
mov esi, 0x58
jmp 0x44745d
cmp esi, 0xffffffef
jne 0x447568
mov esi, 0x52
mov edi, dword [esp + 0x10]
cmp esi, ebx
jl 0x44973b
je 0x447570
cmp esi, 0xd
je 0x447479
cmp esi, 0xa
jne 0x447484
mov eax, dword [esp + 0x108]
or dword [eax + 0x44], 0x20
cmp dword [esp + 0x3c], 0
je 0x4474e0
cmp esi, 0xff
jg 0x44749f
test byte [esp + 0x2c], 1
je 0x4474e0
cmp esi, 0x7f
jle 0x4474e0
mov byte [ebp], 2
add ebp, 1
push ebp
push ebx
mov dword [esp + 0x30], 1
call fcn.00452210
add ebp, eax
push ebp
push esi
call fcn.00452210
add esp, 0x10
add ebp, eax
test byte [esp + 0x2c], 1
je 0x44701c
cmp ebx, 0x7f
jg 0x44701c
mov edi, dword [esp + 0x10]
mov esi, 0x7f
mov eax, dword [esp + 0x24]
mov edx, esi
sub edx, ebx
cmp dword [esp + 0x10c], 0
lea ecx, [eax + edx + 1]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x54], esi
jne 0x447020
cmp ebx, esi
jg 0x447020
mov eax, dword [esp + 0x2c]
and eax, 1
mov dword [esp + 0x50], eax
mov eax, ebx
cdq
and edx, 7
add eax, edx
mov ecx, ebx
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x78]
or byte [eax], dl
cmp dword [esp + 0x50], 0
je 0x44755c
mov eax, dword [esp + 0x108]
mov ecx, dword [eax + 4]
movzx ecx, byte [ecx + ebx]
mov eax, ecx
cdq
and edx, 7
add eax, edx
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea eax, [esp + eax + 0x78]
or byte [eax], dl
add ebx, 1
cmp ebx, esi
jle 0x447515
jmp 0x447020
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x10], edi
cmp dword [esp + 0x3c], 0
je 0x4475a9
cmp ebx, 0xff
jg 0x44758b
test byte [esp + 0x2c], 1
je 0x4475a9
cmp ebx, 0x7f
jle 0x4475a9
mov byte [ebp], 1
add ebp, 1
push ebp
push ebx
mov dword [esp + 0x30], 1
call fcn.00452210
add esp, 8
jmp 0x44701a
mov eax, ebx
cdq
and edx, 7
add eax, edx
sar eax, 3
lea esi, [esp + eax + 0x78]
mov ecx, ebx
and ecx, 7
mov al, 1
shl al, cl
or byte [esi], al
test byte [esp + 0x2c], 1
je 0x4475f2
mov ecx, dword [esp + 0x108]
mov edx, dword [ecx + 4]
movzx ebx, byte [edx + ebx]
mov eax, ebx
cdq
and edx, 7
add eax, edx
sar eax, 3
lea esi, [esp + eax + 0x78]
mov ecx, ebx
and ecx, 7
mov al, 1
shl al, cl
or byte [esi], al
add dword [esp + 0x24], 1
mov dword [esp + 0x54], ebx
jmp 0x447020
mov ecx, dword [esp + 0x54]
test edx, edx
mov esi, dword [esp + 0x44]
mov dword [esp + 0x5c], esi
je 0x447651
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x447620
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x14]
mov byte [eax], 0x1e
add eax, 1
mov byte [eax], cl
add eax, 1
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
test eax, eax
je 0x447678
cmp ecx, 0x7f
jle 0x447678
mov edx, dword [esp + 0x54]
lea ecx, [esp + 0xac]
push ecx
push edx
call fcn.00452210
mov esi, dword [esp + 0x1c]
add esp, 8
jmp 0x44669d
mov esi, dword [esp + 0x14]
mov byte [esp + 0xac], cl
mov eax, 1
jmp 0x44669d
mov dword [esp + 0x14], ebp
mov ecx, ebp
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, eax
sar edx, 8
sub cl, al
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jmp 0x447637
cmp edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
setne cl
add cl, 0x4e
mov byte [eax], cl
add eax, 1
test edx, edx
mov dword [esp + 0x14], eax
je 0x4476f7
cmp dword [esp + 0x10c], 0
jne 0x44770a
lea esi, [esp + 0x78]
mov ecx, eax
sub esi, eax
mov edi, 0x20
lea ebx, [ebx]
mov dl, byte [esi + ecx]
not dl
mov byte [ecx], dl
add ecx, 1
sub edi, 1
jne 0x4476e0
add eax, 0x20
jmp 0x447633
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov ecx, 8
lea esi, [esp + 0x78]
rep movsd dword es:[edi], dword [esi]
add eax, 0x20
jmp 0x447633
test ecx, ecx
je case.0x446887.1
mov ebx, dword [esp + 0xf8]
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x4c]
lea eax, [edi + 1]
push ecx
mov edi, ebx
call fcn.00444d60
add esp, 8
cmp dword [ebx], 0
mov edi, eax
mov dword [esp + 0x10], edi
jne 0x448330
mov eax, dword [esp + 0x48]
jmp 0x447774
mov dword [esp + 0x30], 0xffffffff
jmp 0x44776e
mov eax, 1
mov dword [esp + 0x30], 0xffffffff
jmp 0x447770
mov dword [esp + 0x30], 1
xor eax, eax
mov dword [esp + 0x48], eax
xor ecx, ecx
cmp ebp, ecx
je 0x449781
cmp eax, ecx
jne 0x447792
mov edx, dword [esp + 0x54]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x44], edx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
neg eax
sbb eax, eax
and eax, 0x200
mov dword [esp + 0x24], ecx
mov ecx, ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], ecx
mov al, byte [edi + 1]
cmp al, 0x2b
jne 0x4477cb
xor ebx, ebx
add edi, 1
mov dword [esp + 0x24], 1
mov dword [esp + 0x10], edi
jmp 0x4477e6
cmp al, 0x3f
jne 0x4477df
mov ebx, dword [esp + 0xc4]
add edi, 1
mov dword [esp + 0x10], edi
jmp 0x4477e6
mov ebx, dword [esp + 0xc0]
mov al, byte [ebp]
cmp al, 0x1c
mov dword [esp + 0x20], ebx
je 0x447e33
cmp al, 0x1d
je 0x447e33
cmp al, 0x1e
jne 0x447881
cmp dword [esp + 0x24], 0
movzx eax, byte [ebp + 1]
mov dword [esp + 0x1c], 0xd
mov dword [esp + 0x18], eax
jne 0x44785c
mov eax, dword [esp + 0x30]
test eax, eax
jge 0x447860
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x18]
push ecx
add edi, 1
push edi
push 0
push edx
push eax
push 0x1e
mov eax, dword [esp + 0x120]
call fcn.00445b50
mov edi, dword [esp + 0x28]
add esp, 0x18
test eax, eax
je 0x44785c
xor ebx, ebx
mov dword [esp + 0x24], 1
mov eax, dword [esp + 0x30]
mov cl, byte [ebp]
cmp cl, 0x10
je 0x447ee1
cmp cl, 0xf
je 0x447ee1
or ecx, 0xffffffff
mov dword [esp + 0x20], ecx
jmp 0x447eed
cmp al, 0x17
jae 0x4478b8
cmp dword [esp + 0x24], 0
movzx ecx, al
mov dword [esp + 0x1c], 0x1a
mov dword [esp + 0x18], ecx
jne 0x44785c
mov eax, dword [esp + 0x30]
test eax, eax
jge 0x447860
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
push edx
add edi, 1
push edi
push 0
push eax
push 0
push ecx
jmp 0x44783b
cmp al, 0x4e
je 0x447d68
cmp al, 0x4f
je 0x447d68
cmp al, 0x50
je 0x447d68
cmp al, 0x51
je 0x447d68
cmp al, 0x5e
je 0x447913
cmp al, 0x5f
je 0x447913
cmp al, 0x5d
je 0x447913
cmp al, 0x60
je 0x447913
cmp al, 0x6d
je 0x447d78
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0xb
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
xor eax, eax
mov ebx, esi
sub ebx, ebp
cmp byte [ebp], 0x60
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], eax
jne 0x447931
cmp byte [ebp + 3], 0x66
je 0x4497a4
cmp dword [esp + 0x30], 0xffffffff
jne 0x447957
mov eax, ebp
lea ebx, [ebx]
xor edx, edx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x55
jne 0x447940
mov edx, esi
sub edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x447a3e
cmp dword [esp + 0x30], 1
mov byte [esi], al
jg 0x4479d2
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x3c]
push eax
push ecx
push edx
push 1
push ebp
call fcn.00445a50
push ebx
lea edi, [ebp + 1]
push ebp
push edi
call sub.MSVCRT.dll_memmove
add esi, 1
add esp, 0x20
cmp dword [esp + 0x30], 0
mov dword [esp + 0x14], esi
jne 0x4479af
mov byte [ebp], 0x6f
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov al, byte [esp + 0x20]
add al, 0x67
sub dword [esp + 0x30], 1
mov edx, dword [esp + 0x30]
mov byte [ebp], al
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x10]
jmp 0x447b53
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x108]
mov eax, dword [esp + 0x3c]
push ecx
push edx
push eax
push 4
push ebp
call fcn.00445a50
push ebx
lea ecx, [ebp + 4]
push ebp
push ecx
call sub.MSVCRT.dll_memmove
mov dl, byte [esp + 0x40]
add dl, 0x67
mov byte [ebp], dl
add ebp, 1
mov byte [ebp], 0x5e
add ebp, 1
mov byte [ebp], 0
mov byte [ebp + 1], 0
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
add esi, 4
mov dword [esp + 0x3c], ebp
add ebp, 2
add esp, 0x20
sub dword [esp + 0x30], 1
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ebp
jmp 0x447b53
cmp eax, 1
jle 0x447b43
mov edx, dword [esp + 0x10c]
test edx, edx
je 0x447a9f
mov eax, dword [esp + 0x48]
add eax, 0xffffffff
mov dword [esp + 0x50], eax
imul eax, dword [esp + 0x68]
fild dword [esp + 0x50]
fimul dword [esp + 0x68]
mov dword [esp + 0x38], eax
fcomp qword [0x483cb8]
fnstsw ax
test ah, 0x41
je 0x4497c7
mov eax, dword [edx]
mov ebp, 0x7fffffeb
sub ebp, eax
cmp ebp, dword [esp + 0x38]
jl 0x4497c7
mov ebp, dword [esp + 0x38]
add ebp, eax
mov dword [edx], ebp
jmp 0x447b43
cmp dword [esp + 0xa0], 0
je 0x447ab8
cmp dword [esp + 0x44], 0
jge 0x447ab8
mov eax, dword [esp + 0x34]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x48], 1
jle 0x447b43
mov ecx, dword [esp + 0x48]
add ecx, 0xffffffff
mov dword [esp + 0x38], ecx
mov edi, edi
mov edx, dword [esp + 0x108]
mov edi, dword [edx + 0x20]
push ebx
push ebp
push esi
call sub.MSVCRT.dll_memcpy
mov eax, dword [esp + 0x70]
add esp, 0xc
cmp eax, edi
jae 0x447b2a
mov ecx, dword [esp + 0x108]
mov ecx, dword [ecx + 0x20]
xor edx, edx
mov dh, byte [eax]
add eax, 2
mov dl, byte [eax - 1]
add edx, ebx
sar edx, 8
mov byte [ecx], dl
movzx edx, byte [eax - 1]
mov ecx, dword [esp + 0x108]
mov ecx, dword [ecx + 0x20]
add dl, bl
mov byte [ecx + 1], dl
mov ecx, dword [esp + 0x108]
add dword [ecx + 0x20], 2
cmp eax, edi
jb 0x447af4
add esi, ebx
sub dword [esp + 0x38], 1
mov dword [esp + 0x64], edi
jne 0x447ad0
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x30]
test edx, edx
jle 0x447b55
sub edx, dword [esp + 0x48]
mov dword [esp + 0x30], edx
test edx, edx
jl 0x447d05
mov ebp, dword [esp + 0x10c]
test ebp, ebp
je 0x447bb2
test edx, edx
jle 0x447bb2
mov eax, dword [esp + 0x68]
add eax, 7
mov dword [esp + 0x50], eax
imul eax, edx
fild dword [esp + 0x50]
fimul dword [esp + 0x30]
sub eax, 6
mov edx, eax
fcomp qword [0x483cb8]
fnstsw ax
test ah, 0x41
je 0x449693
mov eax, dword [ebp]
mov ebx, 0x7fffffeb
sub ebx, eax
cmp ebx, edx
jl 0x449693
add edx, eax
mov dword [ebp], edx
jmp 0x447cb3
lea ebp, [edx - 1]
test ebp, ebp
mov dword [esp + 0x38], ebp
jl 0x447cb3
mov al, byte [esp + 0x20]
add al, 0x67
mov byte [esp + 0x6f], al
jmp 0x447bd0
mov edx, dword [esp + 0x108]
mov eax, dword [edx + 0x20]
mov cl, byte [esp + 0x6f]
mov byte [esi], cl
add esi, 1
test ebp, ebp
mov dword [esp + 0x20], eax
je 0x447c12
mov ecx, dword [esp + 0x1c]
mov byte [esi], 0x5e
add esi, 1
test ecx, ecx
jne 0x447bfd
xor eax, eax
jmp 0x447c01
mov eax, esi
sub eax, ecx
mov edx, eax
sar edx, 8
mov dword [esp + 0x1c], esi
mov byte [esi], dl
mov byte [esi + 1], al
add esi, 2
mov eax, dword [esp + 0x18]
push ebx
push eax
push esi
call sub.MSVCRT.dll_memcpy
mov eax, dword [esp + 0x70]
add esp, 0xc
cmp eax, dword [esp + 0x20]
jae 0x447c90
mov edi, ebp
neg edi
sbb edi, edi
and edi, 3
mov ecx, ebp
mov ebp, dword [esp + 0x108]
add edi, 1
neg ecx
sbb cl, cl
and cl, 3
add cl, 1
lea ebx, [ebx]
mov ebp, dword [ebp + 0x20]
xor edx, edx
mov dh, byte [eax]
add eax, 2
mov dl, byte [eax - 1]
add edx, edi
add edx, ebx
sar edx, 8
mov byte [ebp], dl
mov ebp, dword [esp + 0x108]
mov ebp, dword [ebp + 0x20]
mov dl, cl
add dl, bl
add dl, byte [eax - 1]
mov byte [ebp + 1], dl
mov ebp, dword [esp + 0x108]
add dword [ebp + 0x20], 2
cmp eax, dword [esp + 0x20]
jb 0x447c50
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
add esi, ebx
sub ebp, 1
mov dword [esp + 0x64], eax
mov dword [esp + 0x38], ebp
jns 0x447bd0
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], esi
cmp dword [esp + 0x1c], 0
je 0x448122
mov edi, dword [esp + 0x1c]
mov eax, esi
sub eax, edi
add eax, 1
mov ecx, esi
sub ecx, eax
xor edx, edx
mov dh, byte [ecx + 1]
mov dl, byte [ecx + 2]
test edx, edx
jne 0x447cdd
xor edi, edi
jmp 0x447cdf
sub edi, edx
mov byte [esi], 0x55
add esi, 1
mov edx, eax
sar edx, 8
mov byte [esi], dl
mov byte [esi + 1], al
add esi, 2
test edi, edi
mov byte [ecx + 1], dl
mov byte [ecx + 2], al
jne 0x447cc2
mov dword [esp + 0x14], esi
jmp 0x44811a
mov al, byte [esp + 0x20]
mov edi, esi
sub edi, dword [esp + 0x28]
xor ecx, ecx
mov ch, byte [edi + 1]
mov ebx, edi
add al, 0x56
mov byte [edi], al
mov cl, byte [edi + 2]
sub ebx, ecx
cmp dword [esp + 0x10c], 0
jne 0x44811a
cmp byte [ebx], 0x5d
je 0x44811a
mov ebp, ebx
mov edx, dword [esp + 0x3c]
push edx
push edi
push ebp
call fcn.00445710
add esp, 0xc
test eax, eax
jne 0x447d60
xor eax, eax
mov ah, byte [ebp + 1]
mov al, byte [ebp + 2]
add ebp, eax
cmp byte [ebp], 0x54
je 0x447d38
jmp 0x44811a
add byte [ebx], 3
jmp 0x44811a
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x447da0
mov dword [esp + 0x14], ebp
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x108]
or dword [eax + 0x48], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
add edi, 1
xor edx, edx
jmp 0x4464dc
cmp eax, 1
je 0x447db0
mov ecx, dword [esp + 0x108]
or dword [ecx + 0x44], 1
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x447dce
cmp eax, 0xffffffff
jne 0x447de8
add bl, 0x46
mov byte [esi], bl
add esi, 1
mov dword [esp + 0x14], esi
jmp 0x44811a
cmp ecx, 1
jne 0x447dfd
cmp eax, 0xffffffff
jne 0x447dfd
add bl, 0x48
mov byte [esi], bl
add esi, ecx
mov dword [esp + 0x14], esi
jmp 0x44811a
cmp eax, 1
jne 0x447dfd
add bl, 0x4a
mov byte [esi], bl
add esi, eax
mov dword [esp + 0x14], esi
jmp 0x44811a
add bl, 0x4c
mov byte [esi], bl
add esi, 1
mov edx, ecx
sar edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
add esi, 2
cmp eax, 0xffffffff
jne 0x447e1d
xor eax, eax
mov dword [esp + 0x30], eax
mov ecx, eax
sar ecx, 8
mov byte [esi], cl
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x14], esi
jmp 0x44811a
cmp dword [esp + 0x3c], 0
je 0x447e82
test byte [esi - 1], 0x80
lea eax, [esi - 1]
je 0x447e82
mov dl, byte [eax]
and dl, 0xc0
cmp dl, 0x80
jne 0x447e5e
lea ecx, [ecx]
mov cl, byte [eax - 1]
sub eax, 1
and cl, 0xc0
cmp cl, 0x80
je 0x447e50
mov ecx, esi
sub ecx, eax
push ecx
push eax
lea edx, [esp + 0xc0]
push edx
mov dword [esp + 0x24], ecx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
or dword [esp + 0x18], 0x80
jmp 0x447ea5
cmp dword [esp + 0x48], 1
movzx ecx, byte [esi - 1]
mov dword [esp + 0x18], ecx
jle 0x447ea5
mov eax, dword [esp + 0x108]
mov eax, dword [eax + 0x48]
or eax, ecx
or eax, dword [esp + 0x74]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x24], 0
jne 0x44785c
mov eax, dword [esp + 0x30]
test eax, eax
jge 0x447860
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
push ecx
mov ecx, dword [esp + 0x1c]
add edi, 1
push edi
lea edx, [esp + 0xc0]
push edx
movzx edx, byte [ebp]
push eax
push ecx
push edx
jmp 0x44783b
movzx edx, byte [ebp + 2]
movzx ecx, byte [ebp + 1]
mov dword [esp + 0x20], edx
test eax, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], ebp
je 0x447d74
cmp eax, 1
je 0x447f0d
mov edx, dword [esp + 0x108]
or dword [edx + 0x44], 1
add ebx, dword [esp + 0x1c]
cmp dword [esp + 0x48], 0
jne 0x447f66
cmp eax, 0xffffffff
jne 0x447f2f
add bl, 0x1f
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4480cf
cmp eax, 1
jne 0x447f46
add bl, 0x23
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4480cf
add bl, 0x25
mov byte [ebp], bl
add ebp, 1
mov ecx, eax
sar ecx, 8
mov byte [ebp], cl
mov byte [ebp + 1], al
add ebp, 2
mov dword [esp + 0x14], ebp
jmp 0x4480cf
cmp dword [esp + 0x48], 1
jne 0x447fb2
cmp eax, 0xffffffff
jne 0x447f84
add bl, 0x21
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4480cf
cmp eax, 1
mov dword [esp + 0x14], esi
je 0x447d74
lea edx, [eax - 1]
add bl, 0x25
lea ecx, [esi + 1]
sar edx, 8
sub al, 1
mov byte [esi], bl
mov byte [ecx], dl
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x14], ecx
jmp 0x4480cf
mov dl, byte [esp + 0x1c]
add dl, 0x27
mov byte [ebp], dl
mov edx, dword [esp + 0x48]
lea esi, [ebp + 1]
sar edx, 8
mov byte [esi], dl
mov edx, dword [esp + 0x48]
mov byte [esi + 1], dl
add esi, 2
test eax, eax
mov dword [esp + 0x14], esi
jge 0x44803b
cmp dword [esp + 0x3c], 0
je 0x448013
cmp dword [esp + 0x18], 0x80
jl 0x448013
mov edi, dword [esp + 0x18]
and edi, 7
push edi
lea eax, [esp + 0xbc]
push eax
push esi
call sub.MSVCRT.dll_memcpy
add esi, edi
add bl, 0x1f
add esp, 0xc
mov byte [esi], bl
add esi, 1
jmp 0x4480cb
mov dl, byte [esp + 0x18]
mov byte [esi], dl
add esi, 1
test ecx, ecx
jl 0x44802e
mov al, byte [esp + 0x20]
mov byte [esi], cl
add esi, 1
mov byte [esi], al
add esi, 1
add bl, 0x1f
mov byte [esi], bl
add esi, 1
jmp 0x4480cb
cmp eax, edx
je 0x4480cf
cmp dword [esp + 0x3c], 0
je 0x44807d
cmp dword [esp + 0x18], 0x80
jl 0x44807d
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
and edi, 7
push edi
lea ecx, [esp + 0xbc]
push ecx
push esi
call sub.MSVCRT.dll_memcpy
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
add esp, 0xc
add esi, edi
jmp 0x44808e
mov esi, dword [esp + 0x14]
mov dl, byte [esp + 0x18]
mov byte [esi], dl
add esi, 1
mov dword [esp + 0x14], esi
test ecx, ecx
jl 0x4480a0
mov byte [esi], cl
mov cl, byte [esp + 0x20]
add esi, 1
mov byte [esi], cl
add esi, 1
sub eax, dword [esp + 0x48]
cmp eax, 1
mov dword [esp + 0x30], eax
jne 0x4480b6
add bl, 0x23
mov byte [esi], bl
add esi, eax
jmp 0x4480cb
add bl, 0x25
mov byte [esi], bl
add esi, 1
mov edx, eax
sar edx, 8
mov byte [esi], dl
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x14], esi
cmp dword [esp + 0x3c], 0
je 0x448105
cmp dword [esp + 0x18], 0x80
jl 0x448105
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
and esi, 7
push esi
lea eax, [esp + 0xbc]
push eax
push edi
call sub.MSVCRT.dll_memcpy
add esp, 0xc
add edi, esi
mov dword [esp + 0x14], edi
jmp 0x448116
mov eax, dword [esp + 0x14]
mov cl, byte [esp + 0x18]
mov byte [eax], cl
add eax, 1
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x24], 0
je 0x447d78
mov al, byte [ecx]
cmp al, 0x27
je 0x44813b
cmp al, 0x41
je 0x44813f
cmp al, 0x34
jne 0x448167
cmp al, 0x41
jne 0x448153
mov dl, byte [ecx + 3]
cmp dl, 0x10
je 0x44814c
cmp dl, 0xf
jne 0x448153
mov edx, 2
jmp 0x448155
xor edx, edx
movzx eax, al
movzx eax, byte [eax + 0x483d20]
add eax, edx
add ecx, eax
mov dword [esp + 0x40], ecx
mov ebx, esi
sub ebx, ecx
test ebx, ebx
jle 0x447d78
movzx eax, byte [ecx]
add eax, 0xffffffe1
cmp eax, 0x20
ja case.0x448189.32
movzx edx, byte [eax + 0x449bd0]
jmp dword [edx*4 + 0x449b9c]
mov byte [ecx], 0x28
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x29
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x2a
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x2b
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x42
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x43
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x44
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x45
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x35
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x36
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x37
mov edi, dword [esp + 0x10]
jmp 0x447d78
mov byte [ecx], 0x38
mov edi, dword [esp + 0x10]
jmp 0x447d78
push ebx
push ecx
add ecx, 3
push ecx
call sub.MSVCRT.dll_memmove
mov eax, dword [esp + 0x4c]
mov byte [eax], 0x5d
mov byte [esi + 3], 0x55
add ebx, 3
add esi, 3
mov byte [esi + 2], bl
add esi, 1
mov eax, ebx
sar eax, 8
mov byte [esi], al
mov ecx, dword [esp + 0x4c]
mov byte [ecx + 1], al
mov edx, dword [esp + 0x4c]
add esp, 0xc
add esi, 2
mov byte [edx + 2], bl
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], esi
jmp 0x447d78
mov eax, dword [esp + 0x2c]
mov ecx, dword [edx + 0x20]
mov dword [esp + 0x50], eax
xor eax, eax
add edi, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], edi
mov al, byte [edi]
cmp al, 0x2a
mov dword [esp + 0x24], 0x5f
mov dword [esp + 0x64], ecx
jne 0x448383
movzx ebx, byte [edi + 1]
mov ecx, dword [edx + 0xc]
test byte [ebx + ecx], 2
je 0x448383
add edi, 1
mov edx, edi
mov ebp, str.ACCEPT
mov dword [esp + 0x50], edx
mov dword [esp + 0x18], 0
add edi, 1
mov dword [esp + 0x10], edi
movzx eax, byte [edi]
test byte [eax + ecx], 2
jne 0x4482c3
mov al, byte [edi]
cmp al, 0x3a
je 0x4497ea
cmp al, 0x29
jne 0x44980d
sub edi, edx
xor ebx, ebx
lea esp, [esp]
cmp edi, dword [ebx*8 + 0x483128]
jne 0x44830c
push edi
push ebp
push edx
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
je 0x448346
mov edx, dword [esp + 0x50]
mov ecx, dword [ebx*8 + 0x483128]
add ebx, 1
cmp ebx, 7
lea ebp, [ecx + ebp + 1]
jl 0x4482f0
mov edx, dword [esp + 0xf8]
mov dword [edx], 0x3c
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov al, byte [ebx*8 + 0x48312c]
mov byte [esi], al
add esi, 1
cmp al, 0x6e
mov dword [esp + 0x14], esi
jne 0x448368
mov edx, dword [esp + 0x108]
mov dword [edx + 0x4c], 1
cmp ebx, 7
jge 0x44831f
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
cmp al, 0x3f
jne 0x448b1e
mov ebx, 1
add edi, ebx
mov dword [esp + 0x10], edi
mov al, byte [edi]
movzx ecx, al
add ecx, 0xffffffdf
cmp ecx, 0x5b
ja case.0x4483ae.34
movzx ecx, byte [ecx + 0x449c30]
jmp dword [ecx*4 + 0x449bf4]
add edi, ebx
mov dword [esp + 0x10], edi
mov al, byte [edi]
test al, al
je 0x4483d1
cmp al, 0x29
je 0x4483f4
add edi, ebx
mov dword [esp + 0x10], edi
mov al, byte [edi]
test al, al
jne 0x4483c1
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x12
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
cmp byte [edi], 0
je 0x4483d1
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
mov dword [esp + 0x38], ebx
add edi, ebx
jmp 0x448eb8
cmp byte [edi + 1], 0x3f
mov dword [esp + 0x24], 0x60
jne 0x44843b
mov al, byte [edi + 2]
cmp al, 0x3d
je 0x448ec4
cmp al, 0x21
je 0x448ec4
cmp al, 0x3c
je 0x448ec4
mov byte [esi + 3], 0x64
mov edi, dword [esp + 0x10]
mov al, byte [edi + 1]
or edx, 0xffffffff
cmp al, 0x52
mov dword [esp + 0x1c], 3
mov dword [esp + 0x4c], edx
jne 0x448474
cmp byte [edi + 2], 0x26
lea ecx, [edi + 2]
jne 0x448474
mov dword [esp + 0x10], ecx
mov byte [esi + 3], 0x65
mov edi, dword [esp + 0x10]
mov dword [esp + 0x28], edx
jmp 0x4484b9
cmp al, 0x3c
jne 0x448488
add edi, ebx
mov dword [esp + 0x28], 0x3e
mov dword [esp + 0x10], edi
jmp 0x4484b9
cmp al, 0x27
jne 0x44849c
add edi, ebx
mov dword [esp + 0x28], 0x27
mov dword [esp + 0x10], edi
jmp 0x4484b9
cmp al, 0x2d
mov dword [esp + 0x28], 0
je 0x4484ac
cmp al, 0x2b
jne 0x4484b9
add edi, ebx
mov dword [esp + 0x10], edi
movzx edx, byte [edi]
mov dword [esp + 0x4c], edx
movzx ecx, byte [edi + 1]
mov eax, dword [esp + 0x108]
mov edx, dword [eax + 0xc]
add edi, ebx
test byte [ecx + edx], 0x10
je 0x449830
mov dword [esp + 0x10], edi
movzx eax, byte [edi]
xor ecx, ecx
test byte [edx + eax], 0x10
mov ebx, edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ebx
je 0x448532
mov edx, dword [esp + 0x108]
mov edx, dword [edx + 0xc]
or ebp, 0xffffffff
lea esp, [esp]
test ecx, ecx
jl 0x448522
test byte [eax + 0x483ba8], 4
je 0x44851a
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2 - 0x30]
mov dword [esp + 0x20], eax
jmp 0x44851e
mov dword [esp + 0x20], ebp
mov ecx, dword [esp + 0x20]
add edi, 1
mov dword [esp + 0x10], edi
movzx eax, byte [edi]
test byte [eax + edx], 0x10
jne 0x448500
mov eax, dword [esp + 0x28]
mov ebp, edi
sub ebp, ebx
test eax, eax
jle 0x448550
movzx edx, byte [edi]
add edi, 1
cmp edx, eax
mov dword [esp + 0x10], edi
jne 0x449853
mov al, byte [edi]
add edi, 1
cmp al, 0x29
mov dword [esp + 0x10], edi
jne 0x449853
cmp dword [esp + 0x10c], 0
jne 0x448ec4
mov eax, dword [esp + 0x4c]
test eax, eax
jle 0x4485bf
test ecx, ecx
jle 0x449879
cmp eax, 0x2d
mov eax, dword [esp + 0x108]
jne 0x44859b
mov edx, dword [eax + 0x30]
sub edx, ecx
add edx, 1
mov dword [esp + 0x20], edx
mov ecx, edx
jmp 0x44859e
add ecx, dword [eax + 0x30]
test ecx, ecx
jle 0x44989c
cmp ecx, dword [eax + 0x34]
jg 0x44989c
mov eax, ecx
sar eax, 8
mov byte [esi + 4], al
mov byte [esi + 5], cl
jmp 0x448ec4
mov eax, dword [esp + 0x108]
mov edi, dword [eax + 0x24]
xor ebx, ebx
cmp dword [eax + 0x28], ebx
jle 0x4485ff
mov edx, dword [esp + 0x18]
push ebp
lea ecx, [edi + 2]
push ecx
push edx
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
je 0x4485f8
mov eax, dword [esp + 0x108]
add edi, dword [eax + 0x2c]
add ebx, 1
cmp ebx, dword [eax + 0x28]
jl 0x4485d0
mov eax, dword [esp + 0x108]
cmp ebx, dword [eax + 0x28]
jge 0x44861a
movzx eax, byte [edi + 1]
mov ah, byte [edi]
mov byte [esi + 5], al
mov ecx, eax
sar ecx, 8
mov byte [esi + 4], cl
jmp 0x448ec4
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x108]
shr edi, 3
and edi, 1
push edx
mov ebx, ebp
call fcn.00445180
add esp, 4
test eax, eax
jle 0x448654
mov ecx, dword [esp + 0x14]
mov edx, eax
sar edx, 8
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov esi, ecx
jmp 0x448ec4
cmp dword [esp + 0x28], 0
jne 0x4498bf
mov edi, dword [esp + 0x18]
cmp byte [edi], 0x52
jne 0x4486b3
xor ecx, ecx
lea eax, [ecx + 1]
cmp ebp, eax
jle 0x448694
movzx edx, byte [eax + edi]
test byte [edx + 0x483ba8], 4
je 0x4498d1
add eax, 1
cmp eax, ebp
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2 - 0x30]
jl 0x448671
test ecx, ecx
jne 0x448699
mov ecx, 0xffff
mov eax, dword [esp + 0x14]
mov edx, ecx
sar edx, 8
mov byte [eax + 3], 0x65
mov byte [eax + 4], dl
mov byte [eax + 5], cl
mov esi, eax
jmp 0x448ec4
cmp ebp, 6
jne 0x4486e2
push ebp
push str.DEFINE
push edi
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x4486e2
mov eax, dword [esp + 0x14]
mov byte [eax + 3], 0x66
mov dword [esp + 0x1c], 1
mov esi, eax
jmp 0x448ec4
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x4486f3
cmp eax, dword [esi + 0x34]
jle 0x44863e
mov ecx, dword [esp + 0xf8]
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov dword [ecx], eax
jmp 0x44832c
mov dword [esp + 0x24], 0x58
add edi, ebx
jmp 0x448ec0
add edi, ebx
mov dword [esp + 0x10], edi
cmp byte [edi], 0x29
jne 0x44874c
mov ecx, dword [esp + 0x70]
mov byte [esi], 0x6d
mov edi, dword [esp + 0x10]
add esi, ebx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
mov dword [esp + 0x24], 0x59
jmp 0x448ec4
mov cl, byte [edi + 1]
cmp cl, 0x21
je 0x44882d
cmp cl, 0x3d
je 0x44881d
mov ebp, dword [edx + 0xc]
movzx ecx, cl
test byte [ecx + ebp], 0x10
je 0x4498e3
mov ebp, dword [edx + 0xc]
sub al, 0x3c
neg al
sbb eax, eax
add edi, ebx
mov dword [esp + 0x10], edi
movzx ecx, byte [edi]
and eax, 0xffffffe9
add eax, 0x3e
test byte [ecx + ebp], 0x10
mov ebx, edi
mov dword [esp + 0x18], ebx
je 0x4487b4
mov ecx, ebp
add edi, 1
mov dword [esp + 0x10], edi
movzx ebp, byte [edi]
test byte [ecx + ebp], 0x10
jne 0x4487a4
mov ebp, edi
sub ebp, ebx
cmp dword [esp + 0x10c], 0
mov dword [esp + 0x1c], ebp
je 0x448950
movzx ecx, byte [edi]
cmp ecx, eax
jne 0x44994e
cmp dword [edx + 0x28], 0x2710
jge 0x449971
lea eax, [ebp + 3]
cmp eax, dword [edx + 0x2c]
jle 0x448ac8
cmp ebp, 0x20
mov dword [edx + 0x2c], eax
jle 0x448ac8
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x30
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov dword [esp + 0x24], 0x5a
add edi, 2
jmp 0x448ec0
mov dword [esp + 0x24], 0x5b
add edi, 2
jmp 0x448ec0
mov dword [esp + 0x24], 0x5d
add edi, ebx
jmp 0x448ec0
mov byte [esi], 0x53
mov edi, dword [esp + 0x10]
add edi, ebx
mov dword [esp + 0x10], edi
movzx ecx, byte [edi]
mov dword [esp + 0x60], esi
mov edx, 4
add esi, ebx
xor eax, eax
test byte [ecx + 0x483ba8], dl
mov dword [esp + 0xa4], ebx
je 0x448898
jmp 0x448880
add edi, ebx
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
mov dword [esp + 0x10], edi
movzx ecx, byte [edi]
test byte [ecx + 0x483ba8], dl
jne 0x448880
cmp byte [edi], 0x29
jne 0x449908
cmp eax, 0xff
jg 0x44992b
mov byte [esi], al
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x108]
sub ecx, dword [eax + 0x18]
add esi, ebx
add ecx, ebx
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0x10]
sub cl, byte [eax + 0x18]
mov byte [esi + 2], 0
add cl, bl
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x70]
mov byte [esi + 3], 0
mov edi, dword [esp + 0x10]
add esi, edx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
add edi, ebx
mov dword [esp + 0x10], edi
mov al, byte [edi]
cmp al, 0x3d
je 0x448938
cmp al, 0x3e
je 0x448938
cmp al, 0x3c
je case.0x4483ae.39
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x29
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
xor edx, edx
cmp al, 0x3e
sete dl
mov dword [esp + 0x28], 0x29
mov dword [esp + 0x1c], edx
jmp 0x44920a
mov eax, dword [esp + 0x108]
mov ebx, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
test eax, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], 0
mov dword [esp + 0x4c], eax
jle 0x448a92
cmp ebp, 4
mov edx, dword [esp + 0x18]
mov eax, ebp
lea ecx, [ebx + 2]
jb 0x44899b
mov ebp, dword [edx]
cmp ebp, dword [ecx]
jne 0x4489a3
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x448983
mov ebp, dword [esp + 0x1c]
test eax, eax
je 0x448a10
movzx ebp, byte [ecx]
movzx ebx, byte [edx]
sub ebx, ebp
jne 0x4489f2
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x448a08
movzx ebp, byte [ecx]
movzx ebx, byte [edx]
sub ebx, ebp
jne 0x4489f2
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x448a08
movzx ebp, byte [ecx]
movzx ebx, byte [edx]
sub ebx, ebp
jne 0x4489f2
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x448a08
movzx eax, byte [ecx]
movzx ebx, byte [edx]
sub ebx, eax
je 0x448a08
mov ebp, dword [esp + 0x1c]
test ebx, ebx
mov ebx, dword [esp + 0x20]
mov eax, 1
jg 0x448a12
or eax, 0xffffffff
jmp 0x448a12
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
xor eax, eax
test eax, eax
jne 0x448a49
cmp byte [ebx + ebp + 2], al
jne 0x448a6f
test dword [esp + 0x2c], 0x80000
jne 0x448a4b
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x2b
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
jl 0x448a6f
mov ecx, dword [esp + 0x108]
mov eax, dword [esp + 0x28]
add ebx, dword [ecx + 0x2c]
add eax, 1
cmp eax, dword [ecx + 0x28]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], eax
jl 0x448975
jmp 0x448a92
mov ecx, dword [esp + 0x108]
mov eax, dword [ecx + 0x2c]
mov ecx, dword [esp + 0x4c]
sub ecx, dword [esp + 0x28]
lea edx, [ebx + eax]
imul ecx, eax
push ecx
push ebx
push edx
call sub.MSVCRT.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0x108]
mov ecx, dword [eax + 0x30]
add ecx, 1
sar ecx, 8
mov byte [ebx], cl
mov dl, byte [eax + 0x30]
mov eax, dword [esp + 0x18]
push ebp
push eax
lea ecx, [ebx + 2]
add dl, 1
push ecx
mov byte [ebx + 1], dl
call sub.MSVCRT.dll_memcpy
mov byte [ebx + ebp + 2], 0
mov edi, dword [esp + 0x1c]
add esp, 0xc
mov edx, dword [esp + 0x108]
add edi, 1
add dword [edx + 0x28], 1
mov dword [esp + 0x10], edi
add dword [edx + 0x30], 1
mov eax, dword [edx + 0x30]
sar eax, 8
mov byte [esi + 3], al
mov cl, byte [edx + 0x30]
mov byte [esi + 4], cl
mov dword [esp + 0x1c], 2
jmp 0x448ec4
mov dword [esp + 0x28], 0x29
mov dword [esp + 0x1c], ebx
jmp 0x44920a
add edi, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x28], 0x29
jmp 0x448d09
test dword [esp + 0x2c], 0x1000
je 0x448ada
mov dword [esp + 0x24], 0x5e
jmp 0x448ec4
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x108]
mov ecx, dword [eax + 0x30]
push 0
push edx
push ecx
mov dword [esp + 0xa8], edi
mov edi, dword [esp + 0x104]
lea edx, [esp + 0x1c]
push edi
push edx
call fcn.00444810
add esp, 0x14
cmp dword [edi], 0
jne 0x44832c
xor ebx, ebx
cmp eax, ebx
jge 0x4494db
mov ecx, eax
neg ecx
cmp ecx, 0x1a
jne 0x448bb6
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x5c
jne 0x448ba0
cmp byte [edi + 2], 0x45
jne 0x448ba0
mov ecx, dword [esp + 0x70]
add edi, 2
add edi, 1
xor edx, edx
jmp 0x4464dc
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x58], 1
xor edx, edx
jmp 0x4464dc
cmp ecx, 0x19
je 0x4495cc
mov edx, dword [esp + 0x34]
cmp edx, 0xfffffffe
jne 0x448bd9
cmp ecx, 5
jle 0x448bd9
cmp ecx, 0x17
jge 0x448bd9
or edx, 0xffffffff
mov dword [esp + 0x34], edx
cmp ecx, 0x1b
mov edi, dword [esp + 0x10]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x5c], edx
jne 0x4491c0
mov eax, dword [esp + 0x108]
mov ecx, dword [eax + 0x20]
add edi, 1
mov dword [esp + 0x10], edi
mov dl, byte [edi]
mov al, byte [edi + 1]
sub dl, 0x3c
neg dl
mov dword [esp + 0x64], ecx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x38], ebx
sbb edx, edx
and edx, 0xffffffe9
add edx, 0x3e
cmp al, 0x2b
mov dword [esp + 0x28], edx
lea edx, [edi + 1]
je 0x448cb8
cmp al, 0x2d
je 0x448cb8
mov ecx, edx
mov al, byte [ecx]
test al, al
mov dword [esp + 0x4c], 1
je 0x448c80
jmp 0x448c50
movzx eax, al
cmp eax, dword [esp + 0x28]
je 0x448c80
mov ebx, dword [esp + 0x108]
mov ebx, dword [ebx + 0xc]
mov al, byte [eax + ebx]
test al, 4
jne 0x448c72
mov dword [esp + 0x4c], 0
test al, 0x10
je 0x448c80
mov al, byte [ecx + 1]
add ecx, 1
test al, al
jne 0x448c50
movzx eax, byte [ecx]
cmp eax, dword [esp + 0x28]
je 0x448ca4
mov ecx, dword [esp + 0xf8]
mov dword [ecx], 0x39
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
cmp dword [esp + 0x4c], 0
jne 0x448d03
mov dword [esp + 0x1c], 1
jmp 0x44920a
movzx ebx, byte [edi + 2]
lea eax, [edi + 2]
mov cl, 4
test byte [ebx + 0x483ba8], cl
je 0x448cdf
lea esp, [esp]
movzx ebx, byte [eax + 1]
add eax, 1
test byte [ebx + 0x483ba8], cl
jne 0x448cd0
movzx eax, byte [eax]
cmp eax, dword [esp + 0x28]
je 0x448d03
mov ecx, dword [esp + 0xf8]
mov dword [ecx], 0x39
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
mov edi, edx
mov dword [esp + 0x10], edi
mov al, byte [edi]
movzx ecx, al
cmp ecx, 0x2b
jne 0x448d4d
add edi, 1
mov dword [esp + 0x10], edi
movzx edx, byte [edi]
test byte [edx + 0x483ba8], 4
jne 0x44911a
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x3f
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
cmp ecx, 0x2d
jne 0x44911a
movzx edx, byte [edi + 1]
test byte [edx + 0x483ba8], 4
jne 0x449113
mov ebx, dword [esp + 0x108]
xor ebp, ebp
xor edx, edx
cmp al, 0x29
mov dword [esp + 0x20], ebp
mov dword [esp + 0x4c], edx
lea ecx, [esp + 0x4c]
je 0x448deb
lea edx, [ebp + 0x10]
cmp al, 0x3a
je 0x448de3
movzx eax, al
add edi, 1
sub eax, 0x2d
cmp eax, 0x4b
mov dword [esp + 0x10], edi
ja case.0x448da6.46
movzx eax, byte [eax + 0x449cb0]
jmp dword [eax*4 + 0x449c8c]
lea ecx, [esp + 0x20]
jmp 0x448ddd
or dword [ecx], 0x80000
or dword [ebx + 0x44], edx
jmp 0x448ddd
or dword [ecx], 1
jmp 0x448ddd
or dword [ecx], 2
jmp 0x448ddd
or dword [ecx], 4
jmp 0x448ddd
or dword [ecx], 8
jmp 0x448ddd
or dword [ecx], 0x200
jmp 0x448ddd
or dword [ecx], 0x40
mov al, byte [edi]
cmp al, 0x29
jne 0x448d85
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
or edx, ecx
not ebp
and edx, ebp
cmp byte [edi], 0x29
mov eax, edx
mov dword [esp + 0x50], eax
jne 0x448eb5
mov edx, dword [ebx + 0x14]
add edx, 3
cmp esi, edx
jne 0x448e48
mov edx, dword [esp + 0x10c]
test edx, edx
je 0x448e1e
cmp dword [edx], 6
jne 0x448e48
mov edx, dword [esp + 0xec]
mov ecx, dword [esp + 0x70]
mov dword [ebx + 0x40], eax
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [edx], eax
add edi, 1
mov dword [esp + 0x2c], eax
xor edx, edx
jmp 0x4464dc
mov edx, eax
xor edx, ecx
test dl, 7
je 0x448e69
mov byte [esi], 0x19
mov cl, al
add esi, 1
and cl, 7
mov byte [esi], cl
mov edi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0xec]
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [esp + 0xc0], ecx
xor ecx, 1
mov dword [esp + 0xc4], ecx
mov ecx, eax
and ecx, 1
shl ecx, 8
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x70]
mov dword [edx], eax
add edi, 1
mov dword [esp + 0x2c], eax
xor edx, edx
jmp 0x4464dc
add edi, 1
mov dword [esp + 0x24], 0x5e
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x24]
xor eax, eax
cmp ecx, 0x5d
setl al
mov byte [esi], cl
mov dword [esp + 0x40], esi
sub eax, 1
and eax, esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x108]
mov edx, dword [eax + 0x48]
xor eax, eax
cmp ecx, 0x5a
mov dword [esp + 0x4c], edx
mov dword [esp + 0x68], eax
je 0x448efd
cmp ecx, 0x5b
jne 0x448f02
mov eax, 1
mov ebp, dword [esp + 0x10c]
mov ebx, dword [esp + 0xf8]
mov ecx, ebp
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x68]
and ecx, edx
mov edx, dword [esp + 0x104]
push ecx
mov ecx, dword [esp + 0x10c]
push ecx
push edx
lea ecx, [esp + 0xa4]
push ecx
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0xb8]
push edx
mov edx, dword [esp + 0x4c]
push ecx
push edx
mov edx, dword [esp + 0x48]
push eax
push ebx
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x68]
push ecx
and edx, 7
push edx
push eax
call fcn.00449d00
add esp, 0x34
test eax, eax
je 0x44832c
cmp dword [esp + 0x24], 0x60
jne 0x448fad
test ebp, ebp
jne 0x448fad
mov eax, esi
xor ecx, ecx
nop
xor edx, edx
mov dh, byte [eax + 1]
add ecx, 1
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x55
jne 0x448f80
cmp byte [esi + 3], 0x66
jne 0x44902a
cmp ecx, 1
jg 0x4499ba
mov dword [esp + 0x24], 0x66
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x10]
cmp byte [edi], 0x29
jne 0x4499d0
test ebp, ebp
je 0x449054
mov eax, dword [ebp]
mov ecx, dword [esp + 0x68]
mov edx, 0x7fffffeb
sub edx, eax
lea ebx, [ecx - 6]
cmp edx, ebx
jl 0x449601
lea eax, [eax + ecx - 6]
mov ecx, dword [esp + 0x70]
mov dword [ebp], eax
mov ebp, dword [esp + 0x18]
mov byte [esi], 0x5e
add esi, 1
mov byte [esi], 0
mov byte [esi + 1], 3
add esi, 2
mov byte [esi], 0x55
add esi, 1
mov byte [esi], 0
mov byte [esi + 1], 3
mov edi, dword [esp + 0x10]
add esi, 2
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
cmp ecx, 2
jg 0x4499c5
cmp ecx, 1
jne 0x448fad
or ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa8], eax
jmp 0x448fbb
mov edx, dword [esp + 0x40]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x24]
cmp edx, 0x66
je 0x4490da
cmp edx, 0x5d
mov esi, dword [esp + 0x44]
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x34]
mov dword [esp + 0x54], esi
mov dword [esp + 0xa0], 0
jl 0x4490f0
cmp esi, 0xfffffffe
jne 0x4490bd
test eax, eax
jl 0x4490ab
mov dword [esp + 0x34], eax
mov dword [esp + 0xa0], 1
mov dword [esp + 0x54], 0xffffffff
jmp 0x4490d2
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x54], 0xffffffff
jmp 0x4490d2
test eax, eax
jl 0x4490d2
test ecx, ecx
jge 0x4490d6
or eax, dword [esp + 0x4c]
mov ecx, eax
mov dword [esp + 0x98], ecx
test ecx, ecx
jl 0x4490da
mov dword [esp + 0x44], ecx
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
cmp edx, 0x58
jne 0x4490da
test ecx, ecx
jl 0x4490da
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
add edi, 1
mov dword [esp + 0x10], edi
movzx eax, byte [edi]
xor ebx, ebx
test byte [eax + 0x483ba8], 4
je 0x44914a
jmp 0x449130
add edi, 1
lea edx, [ebx + ebx*4]
lea ebx, [eax + edx*2 - 0x30]
mov dword [esp + 0x10], edi
movzx eax, byte [edi]
test byte [eax + 0x483ba8], 4
jne 0x449130
movzx eax, byte [edi]
cmp eax, dword [esp + 0x28]
jne 0x4499ec
cmp ecx, 0x2d
jne 0x4491a0
test ebx, ebx
je 0x449a0f
mov ecx, dword [esp + 0x108]
mov edx, dword [ecx + 0x30]
sub edx, ebx
add edx, 1
mov ebx, edx
test ebx, ebx
jg 0x4492ea
mov eax, dword [esp + 0xf8]
mov dword [eax], 0xf
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
cmp ecx, 0x2b
jne 0x4492ea
test ebx, ebx
je 0x449a32
mov eax, dword [esp + 0x108]
add ebx, dword [eax + 0x30]
jmp 0x4492ea
cmp ecx, 0x1c
jne 0x449428
mov dl, byte [edi + 1]
cmp dl, 0x3c
je 0x4491df
cmp dl, 0x27
je 0x4491df
cmp dl, 0x7b
jne 0x449428
add edi, 1
mov dword [esp + 0x10], edi
mov al, byte [edi]
cmp al, 0x3c
mov dword [esp + 0x1c], ebx
jne 0x4491fa
mov dword [esp + 0x28], 0x3e
jmp 0x44920a
sub al, 0x27
neg al
sbb eax, eax
and eax, 0x56
add eax, 0x27
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x108]
mov esi, dword [eax + 0xc]
add edi, 1
mov dword [esp + 0x10], edi
movzx edx, byte [edi]
test byte [edx + esi], 0x10
mov ecx, edi
mov dword [esp + 0x18], ecx
je 0x449240
mov eax, esi
lea esp, [esp]
add edi, 1
mov dword [esp + 0x10], edi
movzx edx, byte [edi]
test byte [edx + eax], 0x10
jne 0x449230
mov ebx, edi
sub ebx, ecx
cmp dword [esp + 0x10c], 0
je 0x449270
test ebx, ebx
je 0x449a55
movzx eax, byte [edi]
cmp eax, dword [esp + 0x28]
jne 0x44994e
cmp ebx, 0x20
jg 0x449a78
xor ebx, ebx
jmp 0x4492df
mov edi, dword [esp + 0x108]
mov esi, dword [edi + 0x24]
xor ebp, ebp
cmp dword [edi + 0x28], ebp
jle 0x4492ae
jmp 0x449287
mov ecx, dword [esp + 0x18]
push ebx
lea edx, [esi + 2]
push edx
push ecx
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x44929f
cmp byte [esi + ebx + 2], al
je 0x4492aa
add esi, dword [edi + 0x2c]
add ebp, 1
cmp ebp, dword [edi + 0x28]
jl 0x449283
mov ecx, dword [esp + 0x18]
cmp ebp, dword [edi + 0x28]
jge 0x4492bb
movzx ebx, byte [esi + 1]
mov bh, byte [esi]
jmp 0x4492df
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x108]
shr edi, 3
and edi, 1
push ecx
call fcn.00445180
mov ebx, eax
add esp, 4
test ebx, ebx
jle 0x4498bf
cmp dword [esp + 0x1c], 0
je 0x449434
cmp dword [esp + 0x10c], 0
mov eax, dword [esp + 0x108]
mov esi, dword [esp + 0x14]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
jne 0x4493b8
test ebx, ebx
mov byte [esi], 0
je 0x449332
mov ecx, dword [esp + 0x108]
mov esi, dword [esp + 0x3c]
mov eax, dword [ecx + 0x14]
mov edi, ebx
call fcn.00445560
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x449386
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x108]
shr edi, 3
and edi, 1
push eax
call fcn.00445180
add esp, 4
test eax, eax
jl 0x4498d1
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x14]
mov edx, ecx
sub edx, eax
add edx, 4
add ebx, eax
mov eax, dword [esi + 0x20]
sar edx, 8
mov byte [eax], dl
sub cl, byte [esi + 0x14]
mov edx, dword [esi + 0x20]
add cl, 4
mov byte [edx + 1], cl
add dword [esi + 0x20], 2
mov dword [esp + 0x1c], ebx
jmp 0x4493b0
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x4493b8
mov edi, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x108]
mov ebx, esi
call fcn.00445970
add esp, 4
test eax, eax
jne 0x449a9b
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x108]
mov ebp, dword [esp + 0x18]
mov byte [esi], 0x5d
mov byte [esi + 1], 0
add esi, 3
mov cl, 6
mov byte [esi - 1], cl
mov byte [esi], 0x52
mov edx, eax
sub edx, dword [edi + 0x14]
add esi, 3
sar edx, 8
mov byte [esi - 2], dl
sub al, byte [edi + 0x14]
add esi, 3
cmp dword [esp + 0x34], 0xfffffffe
mov byte [esi - 4], al
mov byte [esi - 3], 0x55
mov byte [esi - 2], 0
mov byte [esi - 1], cl
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], esi
mov dword [esp + 0x68], 9
jne 0x447643
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x34], 0xffffffff
xor edx, edx
jmp 0x4464dc
cmp ecx, 0x1d
jl 0x44948d
mov ebx, 0xffffffe3
sub ebx, eax
cmp dword [esp + 0x34], 0xfffffffe
jne 0x449443
mov dword [esp + 0x34], 0xffffffff
mov eax, dword [esp + 0x14]
mov byte [eax], 0x51
mov dword [esp + 0x18], eax
add eax, 1
mov ecx, ebx
sar ecx, 8
mov byte [eax], cl
mov byte [eax + 1], bl
add eax, 2
cmp ebx, 0x20
mov dword [esp + 0x14], eax
mov eax, 1
jge 0x449470
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x108]
or dword [ecx + 0x3c], eax
cmp ebx, dword [ecx + 0x38]
jle 0x447637
mov edx, ecx
mov dword [edx + 0x38], ebx
jmp 0x447637
cmp ecx, 0x16
je 0x449aad
cmp ecx, 0xf
je 0x449aad
cmp ecx, 0x10
je 0x449aad
cmp ecx, 5
jle 0x4494b6
cmp ecx, 0x17
mov dword [esp + 0x18], esi
jl 0x4494ba
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
neg al
mov byte [esi], al
mov edi, dword [esp + 0x10]
add esi, 1
add edi, 1
mov dword [esp + 0x14], esi
xor edx, edx
jmp 0x4464dc
cmp dword [esp + 0x3c], ebx
je 0x4494fc
cmp eax, 0x7f
jle 0x4494fc
lea ecx, [esp + 0xac]
push ecx
push eax
call fcn.00452210
add esp, 8
jmp 0x44669d
mov byte [esp + 0xac], al
mov eax, 1
jmp 0x44669d
mov edi, dword [esp + 0x108]
mov edx, dword [esp + 0x34]
cmp edx, 0xfffffffe
jne 0x44958b
mov ebx, dword [esp + 0x44]
or edx, 0xffffffff
cmp eax, 1
mov dword [esp + 0x54], edx
mov dword [esp + 0x5c], ebx
je 0x449556
cmp dword [esp + 0x74], 0
je 0x449556
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x44], edx
mov dword [esp + 0x34], edx
add edi, 1
xor edx, edx
jmp 0x4464dc
movzx ecx, cl
or ecx, dword [esp + 0x74]
cmp eax, 1
mov dword [esp + 0x34], ecx
je 0x447637
movzx eax, byte [esi - 1]
or eax, dword [edi + 0x48]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x44], eax
xor edx, edx
jmp 0x4464dc
cmp eax, 1
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x54], edx
mov dword [esp + 0x5c], ecx
je 0x4495a7
cmp dword [esp + 0x74], 0
jne 0x44763b
movzx eax, byte [esi - 1]
or eax, dword [edi + 0x48]
mov edi, dword [esp + 0x10]
or eax, dword [esp + 0x74]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
add edi, 1
mov dword [esp + 0x44], eax
xor edx, edx
jmp 0x4464dc
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x70]
add edi, 1
xor edx, edx
jmp 0x4464dc
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x34
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x14
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x34
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xfc]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x100]
mov dword [edx], eax
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0xf0]
mov dword [ecx], edx
mov ecx, dword [esp + 0xf4]
mov dword [eax], esi
mov dword [ecx], edi
mov ecx, dword [esp + 0x10c]
test ecx, ecx
je 0x4496bc
mov eax, dword [ecx]
mov edx, dword [esp + 0x70]
mov ebx, esi
mov ebp, 0x7fffffeb
sub ebx, edx
sub ebp, eax
cmp ebp, ebx
jge 0x4496b6
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x14
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
sub eax, edx
add eax, esi
mov dword [ecx], eax
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xd8
ret
mov cl, byte [edi + 1]
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
sub cl, 0x3a
neg cl
sbb ecx, ecx
and ecx, 0x12
add ecx, 0xd
mov dword [edx], ecx
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x1f
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov dword [ecx], 0x1e
jmp 0x44832c
mov dword [edi], 7
jmp 0x44832c
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 8
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 6
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 9
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x37
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x14
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x3b
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x3c
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x1c
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
sub edi, 1
mov dword [edx], 0x1a
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x3a
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0xf
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xf8]
mov dword [edx], 0xf
jmp 0x44832c
mov eax, dword [esp + 0xf8]
mov dword [eax], 0xf
jmp 0x44832c
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
add edi, ebx
mov dword [edx], 0x18
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x27
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x26
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x2a
mov eax, dword [esp + 0xf4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x31
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
sub edi, 1
mov dword [edx], 0xc
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov dword [ebx], 0x36
jmp 0x44832c
mov dword [ebx], 0x1b
jmp 0x44832c
mov eax, dword [esp + 0xf4]
mov dword [ebx], 0xe
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x1d
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x3a
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x3a
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x3e
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [ecx], 0x30
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret
mov ecx, dword [esp + 0xf8]
mov dword [ecx], 0x28
jmp 0x44832c
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0xf4]
mov dword [edx], 0x2d
mov dword [eax], edi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd8
ret