Function at 0x10046f60
Capabilities:
Encode data using base64
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xdc
mov eax, dword [0x10c67840]
xor eax, esp
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xe0]
mov eax, dword [eax]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0xfc]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x100]
mov dword [esp + 0x54], eax
mov dword [esp + 0xac], edi
mov edi, dword [esp + 0x104]
mov esi, dword [esp + 0xf4]
shr eax, 0xb
and eax, 1
mov dword [esp + 0x98], edi
mov edi, dword [esp + 0x108]
mov ebx, dword [esi]
mov dword [esp + 0x48], eax
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x10c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0xf8]
mov dword [esp + 0x38], edi
mov edi, dword [ecx]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x54]
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0xa4], eax
xor eax, 1
mov dword [esp + 0xa8], eax
mov eax, 0xfffffffe
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], eax
mov eax, ecx
and eax, 1
mov dword [esp + 0x58], eax
xor ebp, ebp
shl eax, 8
mov dword [esp + 0x68], eax
mov dword [esp + 0xa0], esi
xor esi, esi
mov eax, ecx
and eax, 8
mov dword [esp + 0x50], edx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x84], ebp
mov dword [esp + 0x74], ebp
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x78], esi
mov dword [esp + 0x9c], eax
lea esp, [esp]
cmp edi, edx
jae 0x10047114
movzx ecx, word [edi]
cmp ecx, 0x2a
mov dword [esp + 0x14], ecx
je 0x1004711c
cmp ecx, 0x2b
je 0x1004711c
cmp ecx, 0x3f
je 0x1004711c
cmp ecx, 0x7b
jne 0x100470af
lea eax, [edi + 2]
call fcn.100468f0
test eax, eax
mov ecx, dword [esp + 0x14]
jne 0x1004711c
cmp esi, ebp
mov dword [esp + 0x34], ebp
je 0x100470f6
mov eax, dword [esp + 0x84]
mov edx, eax
sub eax, 1
test edx, edx
mov dword [esp + 0x84], eax
jg 0x100470f6
xor edx, edx
mov dh, byte [esi + 2]
mov eax, edi
mov edi, dword [esp + 0x38]
sub eax, dword [edi + 0x14]
mov dword [esp + 0x78], ebp
sar eax, 1
mov dl, byte [esi + 3]
sub eax, edx
mov edx, eax
sar edx, 8
mov byte [esi + 4], dl
mov byte [esi + 5], al
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x9c], ebp
je 0x10047170
cmp ecx, 0xff
jg 0x10047126
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0xc]
movzx eax, byte [edx + ecx]
jmp 0x10047128
xor ecx, ecx
mov dword [esp + 0x14], ecx
jmp 0x100470af
mov dword [esp + 0x34], 1
jmp 0x100470f6
xor eax, eax
test al, 1
jne 0x10048562
mov ecx, dword [esp + 0x14]
cmp ecx, 0x23
mov edi, dword [esp + 0x10]
jne 0x10047170
mov eax, dword [esp + 0x50]
add edi, 2
cmp edi, eax
mov dword [esp + 0x10], edi
jae 0x1004716a
cmp word [edi], 0xa
jne 0x10047141
add dword [esp + 0x10], 2
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
xor ebp, ebp
jmp 0x10047070
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x38]
xor edx, edx
test dword [esp + 0x54], 0x4000
je 0x100471c0
cmp dword [esp + 0x34], edx
jne 0x100471c0
mov byte [ebx], 0x40
mov byte [ebx + 1], 0xff
mov dword [esp + 0x78], ebx
mov eax, edi
add ebx, 1
mov edx, eax
sub edx, dword [esi + 0x14]
add ebx, 1
sar edx, 9
mov byte [ebx], dl
sub eax, dword [esi + 0x14]
mov byte [ebx + 2], 0
sar eax, 1
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
mov edi, dword [esp + 0x10]
add ebx, 4
xor edx, edx
cmp ecx, 0x7c
ja case.0x100471d0.1
movzx eax, byte [ecx + 0x10048610]
jmp dword [eax*4 + 0x100485dc]
cmp edi, dword [esp + 0x50]
jb 0x100484a8
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x98]
mov dword [edx], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0xa0]
mov dword [ecx], edx
mov dword [eax], ebx
mov eax, 1
jmp 0x10048587
test byte [esp + 0x54], 2
je 0x10047224
cmp dword [esp + 0x28], 0xfffffffe
jne 0x10047224
mov dword [esp + 0x28], 0xffffffff
mov esi, dword [esp + 0x78]
mov byte [ebx], 0x13
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x50]
add ebx, 1
xor ebp, ebp
jmp 0x10047070
mov esi, dword [esp + 0x78]
mov byte [ebx], 0x14
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x50]
add ebx, 1
xor ebp, ebp
jmp 0x10047070
mov eax, dword [esp + 0x28]
cmp eax, 0xfffffffe
jne 0x10047278
or eax, 0xffffffff
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x50]
mov byte [ebx], 0xb
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
add ebx, 1
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
xor ebp, ebp
jmp 0x10047070
add edi, 2
mov dword [esp + 0x10], edi
movzx esi, word [edi]
cmp esi, 0x5e
mov dword [esp + 0x18], ebx
jne 0x100472cd
add edi, 2
mov dword [esp + 0x10], edi
movzx esi, word [edi]
mov dword [esp + 0x44], 1
jmp 0x100472d1
mov dword [esp + 0x44], edx
lea eax, [ebx + 0x24]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x3c], 0xffffffff
mov dword [esp + 0x34], edx
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
cmp dword [esp + 0x48], 0
je 0x10047358
cmp esi, 0x7f
jle 0x10047358
mov ecx, esi
and ecx, 0xfffffc00
cmp ecx, 0xd800
jne 0x10047358
mov eax, dword [esp + 0x10]
movzx edx, word [eax + 2]
add esi, 0xffff2809
shl esi, 0xa
add esi, edx
add eax, 2
mov dword [esp + 0x10], eax
cmp esi, 0x5c
jne 0x10047501
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
mov ebp, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
push 1
push eax
push edx
push ebp
lea eax, [esp + 0x20]
push edi
push eax
call fcn.10046550
mov esi, eax
mov ecx, esi
neg ecx
add esp, 0x18
cmp ecx, 4
jne 0x1004739b
mov esi, 8
jmp 0x10047501
cmp ecx, 0xf
jne 0x100473aa
mov esi, 0x58
jmp 0x10047501
cmp ecx, 0x13
jne 0x100473dd
mov ecx, dword [esp + 0x10]
lea eax, [ecx + 4]
cmp eax, edi
jae 0x100473d0
cmp word [ecx + 2], 0x5c
jne 0x100473d0
cmp word [eax], 0x45
jne 0x100473d0
mov dword [esp + 0x10], eax
jmp 0x1004784e
mov dword [esp + 0x74], 1
jmp 0x1004784e
test esi, esi
jge 0x10047501
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 8]
mov edx, 2
add dword [esp + 0x1c], edx
add ecx, 0xfffffffb
cmp ecx, 5
ja case.default.0x10047401
jmp dword [ecx*4 + 0x10048690]
xor esi, esi
lea ebx, [ebx]
mov cl, byte [eax + esi + 0x40]
or byte [esp + esi + 0xc0], cl
add esi, 1
cmp esi, 0x20
jl 0x10047410
jmp 0x1004784e
xor esi, esi
lea ebx, [ebx]
mov dl, byte [eax + esi + 0x40]
not dl
or byte [esp + esi + 0xc0], dl
add esi, 1
cmp esi, 0x20
jl 0x10047430
jmp 0x1004784e
xor esi, esi
lea esp, [esp]
mov cl, byte [eax + esi + 0xa0]
or byte [esp + esi + 0xc0], cl
add esi, 1
cmp esi, 0x20
jl 0x10047450
jmp 0x1004784e
xor esi, esi
lea ecx, [ecx]
mov dl, byte [eax + esi + 0xa0]
not dl
or byte [esp + esi + 0xc0], dl
add esi, 1
cmp esi, 0x20
jl 0x10047470
jmp 0x1004784e
mov edi, eax
lea eax, [esp + 0xc0]
xor esi, esi
sub edi, eax
lea ebx, [ebx]
lea ecx, [esp + esi + 0xc0]
mov dl, byte [edi + ecx]
or byte [ecx], dl
add esi, 1
cmp esi, 0x20
jl 0x100474a0
jmp 0x1004784e
mov edi, eax
lea eax, [esp + 0xc0]
xor esi, esi
sub edi, eax
jmp 0x100474d0
lea ecx, [esp + esi + 0xc0]
mov dl, byte [edi + ecx]
not dl
or byte [ecx], dl
add esi, 1
cmp esi, 0x20
jl 0x100474d0
jmp 0x1004784e
test byte [esp + 0x54], 0x40
jne 0x1004857a
mov eax, dword [esp + 0x10]
movzx esi, word [eax]
sub dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x10]
cmp word [ecx + 2], 0x2d
jne 0x10047646
mov edx, ecx
cmp word [edx + 4], 0x5d
je 0x10047646
mov eax, ecx
add eax, 4
cmp dword [esp + 0x48], 0
mov dword [esp + 0x10], eax
movzx edi, word [eax]
je 0x10047556
mov ecx, edi
and ecx, 0xfffffc00
cmp ecx, 0xd800
jne 0x10047556
movzx edx, word [eax + 2]
add edi, 0xffff2809
shl edi, 0xa
add edi, edx
add eax, 2
mov dword [esp + 0x10], eax
cmp edi, 0x5c
jne 0x10047598
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x10]
push 1
push eax
mov eax, dword [esp + 0x54]
push edx
push eax
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.10046550
mov edi, eax
add esp, 0x18
test edi, edi
jge 0x10047598
cmp edi, 0xfffffffc
jne 0x10047630
mov edi, 8
cmp edi, esi
je 0x10047646
cmp dword [esp + 0x48], 0
je 0x10047782
cmp edi, 0xff
jg 0x100475c7
cmp dword [esp + 0x58], 0
je 0x10047782
cmp edi, 0x7f
jle 0x10047782
cmp dword [esp + 0x58], 0
mov dword [esp + 0x34], 1
je 0x10047758
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x6c]
push edi
push edx
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edi
call fcn.10046eb0
add esp, 0x10
test eax, eax
je 0x10047758
jmp 0x10047610
mov edx, dword [esp + 0x8c]
cmp edx, esi
mov ebp, dword [esp + 0x70]
jl 0x100476e1
cmp ebp, edi
jle 0x10047731
jmp 0x100476f0
cmp edi, 0xfffffff1
jne 0x1004763f
mov edi, 0x58
jmp 0x10047598
add ebp, 0xfffffffc
mov dword [esp + 0x10], ebp
cmp dword [esp + 0x48], 0
je 0x100477f9
cmp esi, 0xff
jg 0x1004766d
cmp dword [esp + 0x58], 0
je 0x100477f9
cmp esi, 0x7f
jle 0x100477f9
mov ebp, dword [esp + 0x14]
mov byte [ebp], 1
add ebp, 1
mov eax, ebp
mov edx, esi
mov dword [esp + 0x34], 1
call fcn.100589a0
add ebp, eax
cmp dword [esp + 0x58], 0
mov dword [esp + 0x14], ebp
je 0x1004784e
lea ecx, [esp + 0xb4]
push ecx
lea edi, [esp + 0x98]
call fcn.10058880
add esp, 4
cmp eax, 1
jne 0x1004784e
mov edx, dword [esp + 0x94]
test edx, edx
jle 0x1004784e
mov byte [ebp], al
add ebp, 1
mov eax, ebp
call fcn.100589a0
add ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x1004784e
lea eax, [esi - 1]
cmp ebp, eax
jl 0x100476ec
mov esi, edx
jmp 0x10047731
cmp ebp, edi
jle 0x100476fb
lea ecx, [edi + 1]
cmp edx, ecx
jg 0x100476fb
mov edi, ebp
jmp 0x10047731
cmp edx, ebp
mov eax, dword [esp + 0x14]
jne 0x1004770f
mov byte [eax], 1
add eax, 1
mov dword [esp + 0x14], eax
jmp 0x10047722
mov byte [eax], 2
add eax, 1
mov dword [esp + 0x14], eax
call fcn.100589a0
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov edx, ebp
call fcn.100589a0
add dword [esp + 0x14], eax
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x90]
push eax
push ecx
lea edx, [esp + 0x70]
push edx
call fcn.10046eb0
add esp, 0x10
test eax, eax
jne 0x10047610
mov ebp, dword [esp + 0x14]
mov byte [ebp], 2
add ebp, 1
mov eax, ebp
mov edx, esi
call fcn.100589a0
add ebp, eax
mov eax, ebp
mov edx, edi
call fcn.100589a0
add ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x1004784e
cmp esi, edi
jg 0x1004784e
mov ecx, dword [esp + 0x1c]
mov eax, edi
sub eax, esi
lea edx, [ecx + eax + 1]
mov dword [esp + 0x1c], edx
lea ebx, [ebx]
mov eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
lea ebp, [esp + eax + 0xc0]
mov ecx, esi
and ecx, 7
mov al, 1
shl al, cl
or byte [ebp], al
cmp dword [esp + 0x58], 0
je 0x100477ec
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 4]
movzx ecx, byte [edx + esi]
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
lea ebp, [esp + eax + 0xc0]
and ecx, 7
mov al, 1
shl al, cl
or byte [ebp], al
mov dword [esp + 0x3c], esi
add esi, 1
cmp esi, edi
jle 0x100477a0
jmp 0x1004784e
mov eax, esi
cdq
and edx, 7
add eax, edx
mov ecx, esi
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea edi, [esp + eax + 0xc0]
or byte [edi], dl
cmp dword [esp + 0x58], 0
je 0x10047845
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 4]
movzx esi, byte [ecx + esi]
mov eax, esi
cdq
and edx, 7
add eax, edx
mov ecx, esi
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea edi, [esp + eax + 0xc0]
or byte [edi], dl
add dword [esp + 0x1c], 1
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0x10]
add eax, 2
mov dword [esp + 0x10], eax
movzx esi, word [eax]
cmp esi, 0x5d
jne 0x10047322
cmp dword [esp + 0x74], 0
jne 0x10047322
mov ecx, dword [esp + 0x1c]
cmp ecx, 1
jne 0x1004789a
mov edx, dword [esp + 0x48]
test edx, edx
je 0x100478ff
cmp dword [esp + 0x34], 0
jne 0x1004789a
cmp dword [esp + 0x44], 0
je 0x100478ff
mov eax, dword [esp + 0x3c]
cmp eax, 0x80
jl 0x10047903
mov eax, dword [esp + 0x28]
cmp eax, 0xfffffffe
jne 0x100478aa
or eax, 0xffffffff
mov dword [esp + 0x28], eax
cmp dword [esp + 0x34], 0
mov edx, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], edx
je 0x100479b5
mov edx, dword [esp + 0x14]
mov byte [edx], 0
mov byte [ebx], 0x3d
add ebx, 3
add edx, 1
cmp dword [esp + 0x44], 0
setne al
test ecx, ecx
mov byte [ebx], al
jle 0x1004796c
or al, 2
lea edi, [ebx + 1]
mov byte [ebx], al
mov ecx, 8
lea esi, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
mov ebx, edx
jmp 0x10047988
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x44], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
je 0x10047949
mov ecx, dword [esp + 0x28]
cmp ecx, 0xfffffffe
jne 0x10047922
or ecx, 0xffffffff
mov dword [esp + 0x28], ecx
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x50]
mov byte [ebx], 0x17
add ebx, 1
mov byte [ebx], al
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
add ebx, 1
mov dword [esp + 0x3c], ecx
xor ebp, ebp
jmp 0x10047070
test edx, edx
je 0x1004795b
cmp eax, 0x7f
jle 0x1004795b
mov edx, dword [esp + 0x3c]
jmp 0x100484ba
mov byte [esp + 0xb8], al
mov esi, 1
jmp 0x100484c8
sub edx, ebx
sub edx, 0x21
mov esi, edx
push esi
lea eax, [ebx + 0x21]
push eax
lea ecx, [ebx + 1]
push ecx
call fcn.1030ad1f
add esp, 0xc
lea ebx, [ebx + esi + 1]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x78]
mov edx, ebx
sub edx, eax
sar edx, 8
mov cl, bl
sub cl, al
mov byte [eax + 1], dl
mov edx, dword [esp + 0x50]
mov byte [eax + 2], cl
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
xor ebp, ebp
jmp 0x10047070
cmp dword [esp + 0x44], 0
lea esi, [esp + 0xc0]
je 0x100479fc
mov byte [ebx], 0x3c
add ebx, 1
mov eax, ebx
sub esi, ebx
mov edi, 0x20
mov dl, byte [esi + eax]
not dl
mov byte [eax], dl
add eax, 1
sub edi, 1
jne 0x100479d2
add dword [esp + 0x10], 2
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
add ebx, 0x20
xor ebp, ebp
jmp 0x10047070
mov edx, dword [esp + 0x50]
mov byte [ebx], 0x3b
add ebx, 1
mov edi, ebx
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
add dword [esp + 0x10], 2
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
add ebx, 0x20
xor ebp, ebp
jmp 0x10047070
cmp dword [esp + 0x34], edx
je 0x100484a8
mov esi, dword [esp + 0x4c]
push esi
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x34]
push ecx
lea eax, [edi + 2]
call fcn.100469d0
add esp, 0xc
cmp dword [esi], 0
mov edi, eax
mov dword [esp + 0x10], edi
jne 0x10048585
jmp 0x10047a83
mov dword [esp + 0x20], 0xffffffff
jmp 0x10047a7f
mov dword [esp + 0x2c], 1
mov dword [esp + 0x20], 0xffffffff
jmp 0x10047a83
mov dword [esp + 0x20], 1
mov dword [esp + 0x2c], edx
mov esi, dword [esp + 0x18]
test esi, esi
mov ecx, dword [esp + 0x20]
je 0x100485a9
mov ebp, dword [esp + 0x2c]
test ebp, ebp
jne 0x10047aab
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], eax
sub ebp, ecx
neg ebp
sbb ebp, ebp
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x50]
and ebp, 0x200
lea edx, [edi + 2]
cmp edx, eax
mov dword [esp + 0x64], ebp
mov dword [esp + 0x5c], esi
jae 0x10047b05
cmp word [edx], 0x2b
jne 0x10047aec
mov edi, edx
xor eax, eax
mov dword [esp + 0x60], 1
mov dword [esp + 0x10], edi
jmp 0x10047b0c
cmp edx, eax
jae 0x10047b05
cmp word [edx], 0x3f
jne 0x10047b05
mov eax, dword [esp + 0xa8]
mov edi, edx
mov dword [esp + 0x10], edi
jmp 0x10047b0c
mov eax, dword [esp + 0xa4]
cmp byte [esi], 0x3f
mov dword [esp + 0x1c], eax
jne 0x10047b5f
mov eax, dword [esp + 0x18]
push 3
push eax
add eax, 3
push eax
call fcn.1030ad1f
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x24]
add ebx, 3
mov ecx, ebx
sub ecx, eax
sar ecx, 8
mov byte [eax + 1], cl
mov dl, bl
sub dl, al
mov byte [eax], 0x50
mov byte [eax + 2], dl
mov eax, dword [esp + 0x28]
mov byte [ebx + 1], cl
mov ecx, dword [esp + 0x2c]
mov byte [ebx], 0x42
mov byte [ebx + 2], dl
mov edi, dword [esp + 0x1c]
add esp, 0xc
add ebx, 3
mov dl, byte [esi]
cmp dl, 0x15
mov byte [esp + 0x27], dl
je 0x10047e82
cmp dl, 0x16
je 0x10047e82
cmp dl, 0x17
jne 0x10047b91
movzx edx, byte [esi + 1]
mov dword [esp + 0x34], 9
mov dword [esp + 0x14], edx
jmp 0x10047efe
cmp dl, 0x10
jae 0x10047bac
movzx edx, byte [esp + 0x27]
mov dword [esp + 0x34], 0x12
mov dword [esp + 0x14], edx
jmp 0x10047efe
cmp dl, 0x3b
je 0x10047de2
cmp dl, 0x3c
je 0x10047de2
cmp dl, 0x3d
je 0x10047de2
cmp dl, 0x3e
je 0x10047de2
cmp dl, 0x50
jae 0x10047be3
cmp dl, 0x4a
je 0x10047be3
cmp dl, 0x4b
jne 0x100485b5
mov edi, ebx
xor ebp, ebp
sub edi, esi
cmp ecx, 0xffffffff
mov dword [esp + 0x44], ebp
mov dword [esp + 0x34], edi
jne 0x10047c0f
mov eax, esi
xor edx, edx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x42
jne 0x10047bf8
mov edx, ebx
sub edx, eax
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10047cce
test ecx, ecx
jne 0x10047c26
mov ebx, esi
jmp 0x1004813a
cmp ecx, 1
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x18]
mov byte [ebx], 0
jg 0x10047c78
mov eax, dword [esp + 0x38]
push eax
push 1
call fcn.10046e60
mov ecx, dword [esp + 0x3c]
mov eax, esi
push ecx
lea esi, [eax + 1]
push eax
push esi
call fcn.1030ad1f
mov dl, byte [esp + 0x30]
mov eax, dword [esp + 0x2c]
add dl, 0x4d
add esp, 0x14
add ebx, 1
sub dword [esp + 0x20], 1
mov byte [eax], dl
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], esi
jmp 0x10047d1d
mov ecx, dword [esp + 0x38]
push ecx
push 4
call fcn.10046e60
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
push edx
push eax
add eax, 4
push eax
call fcn.1030ad1f
mov cl, byte [esp + 0x30]
mov eax, dword [esp + 0x2c]
add cl, 0x4d
mov byte [eax], cl
add eax, 1
mov byte [eax], 0x50
add eax, 1
mov ebp, eax
mov byte [eax], 0
mov byte [eax + 1], 0
add eax, 2
add esp, 0x14
add ebx, 4
sub dword [esp + 0x20], 1
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
jmp 0x10047d1d
cmp eax, 1
jle 0x10047d0d
cmp dword [esp + 0x7c], 0
je 0x10047ce9
cmp dword [esp + 0x30], 0
jge 0x10047ce9
mov edx, dword [esp + 0x28]
mov dword [esp + 0x30], edx
cmp dword [esp + 0x2c], 1
jle 0x10047d0d
mov esi, dword [esp + 0x2c]
add esi, 0xffffffff
mov eax, dword [esp + 0x18]
push edi
push eax
push ebx
call fcn.1030ad1f
add esp, 0xc
add ebx, edi
sub esi, 1
jne 0x10047cf7
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x10047d1f
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
test eax, eax
jl 0x10047dcf
lea esi, [eax - 1]
test esi, esi
jl 0x10047d85
mov al, byte [esp + 0x1c]
mov edi, dword [esp + 0x34]
add al, 0x4d
mov byte [esp + 0x27], al
jmp 0x10047d44
mov al, byte [esp + 0x27]
mov byte [ebx], al
add ebx, 1
test esi, esi
je 0x10047d6f
add ebx, 1
mov byte [ebx - 1], 0x50
mov ecx, ebx
sub ecx, ebp
mov eax, ebp
neg eax
sbb eax, eax
and eax, ecx
mov ecx, eax
sar ecx, 8
mov ebp, ebx
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
mov edx, dword [esp + 0x18]
push edi
push edx
push ebx
call fcn.1030ad1f
add esp, 0xc
add ebx, edi
sub esi, 1
jns 0x10047d40
test ebp, ebp
je 0x100480e6
lea ecx, [ecx]
mov eax, ebx
sub eax, ebp
add eax, 1
mov esi, ebx
sub esi, eax
xor ecx, ecx
mov ch, byte [esi + 1]
mov cl, byte [esi + 2]
test ecx, ecx
jne 0x10047dab
xor ebp, ebp
jmp 0x10047dad
sub ebp, ecx
mov byte [ebx], 0x42
add ebx, 1
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
test ebp, ebp
mov byte [esi + 1], cl
mov byte [esi + 2], al
jne 0x10047d90
jmp 0x100480e6
mov al, byte [esp + 0x1c]
add al, 0x43
mov ecx, ebx
sub ecx, dword [esp + 0x44]
mov byte [ecx], al
jmp 0x100480e6
test ecx, ecx
jne 0x10047e0b
mov eax, dword [esp + 0x38]
add dword [esp + 0x10], 2
or dword [eax + 0x2c], ebp
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov ebx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x18], ecx
xor ebp, ebp
jmp 0x10047070
cmp ecx, 1
je 0x10047e1b
mov edx, dword [esp + 0x38]
mov dword [edx + 0x30], 1
cmp dword [esp + 0x2c], 0
jne 0x10047e2e
cmp ecx, 0xffffffff
jne 0x10047e41
add al, 0x33
jmp 0x100480e1
cmp dword [esp + 0x2c], 1
jne 0x10047e4d
cmp ecx, 0xffffffff
jne 0x10047e4d
add al, 0x35
jmp 0x100480e1
cmp ecx, 1
jne 0x10047e4d
add al, 0x37
jmp 0x100480e1
add al, 0x39
mov byte [ebx], al
mov eax, dword [esp + 0x2c]
add ebx, 1
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
add ebx, 2
cmp ecx, 0xffffffff
jne 0x10047e70
xor ecx, ecx
mov dword [esp + 0x20], ecx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
jmp 0x100480e6
cmp dword [esp + 0x48], 0
je 0x10047edc
test byte [ebx - 1], 0x80
lea edx, [ebx - 1]
je 0x10047edc
mov ecx, edx
mov dl, byte [ecx]
and dl, 0xc0
cmp dl, 0x80
jne 0x10047eac
mov edi, edi
mov al, byte [ecx - 1]
sub ecx, 1
and al, 0xc0
cmp al, 0x80
je 0x10047ea0
mov eax, ebx
sub eax, ecx
push eax
push ecx
lea ecx, [esp + 0xe8]
push ecx
mov dword [esp + 0x20], eax
call fcn.1030ad1f
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
or dword [esp + 0x14], 0x80
jmp 0x10047efe
cmp dword [esp + 0x2c], 1
movzx edx, byte [ebx - 1]
mov dword [esp + 0x14], edx
jle 0x10047efe
mov edx, dword [esp + 0x38]
mov edi, dword [edx + 0x2c]
or edi, dword [esp + 0x14]
or edi, dword [esp + 0x68]
mov dword [esp + 0x30], edi
mov dl, byte [esp + 0x27]
cmp dl, 0xe
je 0x10047f16
cmp dl, 0xd
je 0x10047f16
mov dword [esp + 0x44], 0xffffffff
jmp 0x10047f1e
movzx edx, byte [esi + 1]
mov dword [esp + 0x44], edx
test ecx, ecx
mov edi, ebx
mov ebx, esi
je 0x1004813e
cmp ecx, 1
je 0x10047f3a
mov edx, dword [esp + 0x38]
mov dword [edx + 0x30], 1
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
add eax, edx
test ebx, ebx
mov dword [esp + 0x1c], eax
jne 0x10047f74
cmp ecx, 0xffffffff
lea ebx, [esi + 1]
jne 0x10047f5d
add al, 0x18
mov byte [esi], al
jmp 0x100480a2
cmp ecx, 1
jne 0x10047f6b
add al, 0x1c
mov byte [esi], al
jmp 0x100480a2
add al, 0x1e
mov byte [esi], al
jmp 0x10048095
cmp ebx, 1
jne 0x10047fac
cmp ecx, 0xffffffff
jne 0x10047f8a
add al, 0x1a
mov byte [esi], al
lea ebx, [esi + 1]
jmp 0x100480a2
cmp ecx, 1
mov ebx, edi
je 0x1004813e
lea edx, [ecx - 1]
add al, 0x1e
sar edx, 8
lea ebx, [edi + 1]
mov byte [edi], al
mov byte [ebx], dl
sub cl, 1
jmp 0x1004809c
add dl, 0x20
mov byte [esi], dl
mov edx, dword [esp + 0x2c]
lea ebx, [esi + 1]
sar edx, 8
mov byte [ebx], dl
mov dl, byte [esp + 0x2c]
mov byte [ebx + 1], dl
add ebx, 2
test ecx, ecx
jge 0x10048029
cmp dword [esp + 0x48], 0
je 0x10048007
cmp dword [esp + 0x14], 0x80
jl 0x10048007
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea eax, [esp + 0xe4]
push eax
push ebx
call fcn.1030ad1f
mov eax, dword [esp + 0x28]
add ebx, esi
add al, 0x18
add esp, 0xc
mov byte [ebx], al
add ebx, 1
jmp 0x100480a2
mov cl, byte [esp + 0x14]
mov byte [ebx], cl
mov ecx, dword [esp + 0x44]
add ebx, 1
test ecx, ecx
jl 0x1004801d
mov byte [ebx], cl
add ebx, 1
add al, 0x18
mov byte [ebx], al
add ebx, 1
jmp 0x100480a2
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x20], edx
je 0x100480a2
cmp dword [esp + 0x48], 0
je 0x10048069
cmp dword [esp + 0x14], 0x80
jl 0x10048069
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea eax, [esp + 0xe4]
push eax
push ebx
call fcn.1030ad1f
mov eax, dword [esp + 0x28]
add esp, 0xc
add ebx, esi
jmp 0x10048072
mov cl, byte [esp + 0x14]
mov byte [ebx], cl
add ebx, 1
cmp dword [esp + 0x44], 0
mov ecx, dword [esp + 0x20]
jl 0x10048086
mov dl, byte [esp + 0x44]
mov byte [ebx], dl
add ebx, 1
sub ecx, dword [esp + 0x2c]
add al, 0x1e
mov byte [ebx], al
mov dword [esp + 0x20], ecx
add ebx, 1
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
cmp dword [esp + 0x48], 0
je 0x100480d0
cmp dword [esp + 0x14], 0x80
jl 0x100480d0
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea ecx, [esp + 0xe4]
push ecx
push ebx
call fcn.1030ad1f
add esp, 0xc
add ebx, esi
jmp 0x100480d9
mov dl, byte [esp + 0x14]
mov byte [ebx], dl
add ebx, 1
mov eax, dword [esp + 0x44]
test eax, eax
jl 0x100480e6
mov byte [ebx], al
add ebx, 1
cmp dword [esp + 0x60], 0
je 0x1004813a
mov ecx, dword [esp + 0x5c]
mov eax, ebx
sub eax, ecx
push eax
push ecx
add ecx, 3
push ecx
mov dword [esp + 0x6c], eax
call fcn.1030ad1f
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov byte [eax], 0x4a
mov byte [ebx + 3], 0x42
add ecx, 3
add ebx, 3
add ebx, 1
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
mov edx, dword [esp + 0x68]
mov byte [edx + 1], al
mov eax, dword [esp + 0x68]
add esp, 0xc
add ebx, 2
mov byte [eax + 2], cl
mov ebp, dword [esp + 0x64]
mov eax, dword [esp + 0x38]
add dword [esp + 0x10], 2
or dword [eax + 0x2c], ebp
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x18], 0
xor ebp, ebp
jmp 0x10047070
add edi, 2
xor edx, edx
mov dword [esp + 0x10], edi
cmp word [edi], 0x3f
jne 0x100481bb
add edi, 2
mov dword [esp + 0x10], edi
movzx eax, word [edi]
cmp eax, 0x21
je 0x100481ad
cmp eax, 0x3a
je 0x1004819f
cmp eax, 0x3d
jne 0x100485c1
add edi, 2
mov eax, 0x45
mov dword [esp + 0x10], edi
jmp 0x100481fa
add edi, 2
mov eax, 0x50
mov dword [esp + 0x10], edi
jmp 0x100481fa
add edi, 2
mov eax, 0x46
mov dword [esp + 0x10], edi
jmp 0x100481fa
test dword [esp + 0x54], 0x1000
je 0x100481cc
mov eax, 0x50
jmp 0x100481fa
add dword [ebp], 1
mov eax, dword [ebp]
cmp eax, 0x64
jle 0x100481f7
mov byte [ebx + 3], 0x4f
mov ecx, dword [ebp]
sar ecx, 8
mov byte [ebx + 4], cl
mov dl, byte [ebp]
mov byte [ebx + 5], dl
mov eax, 0xb5
mov edx, 3
jmp 0x100481fa
add eax, 0x50
xor ecx, ecx
cmp eax, 0x4a
setl cl
mov byte [ebx], al
mov edi, dword [esi + 0x2c]
mov dword [esp + 0x40], eax
mov dword [esp + 0x5c], ebx
sub ecx, 1
and ecx, ebx
cmp eax, 0x47
mov dword [esp + 0x18], ecx
je 0x10048226
cmp eax, 0x48
je 0x10048226
xor eax, eax
jmp 0x1004822b
mov eax, 1
mov ecx, dword [esp + 0xb0]
push esi
push ecx
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x94]
push ecx
push edx
mov edx, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x68]
push edx
push eax
mov eax, dword [esp + 0x74]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x80]
push edx
mov ecx, eax
push ebp
and ecx, 7
push ecx
push eax
call fcn.1030ad1f
add esp, 0x34
test eax, eax
je 0x10048581
mov esi, dword [esp + 0x40]
cmp esi, 0x4b
jne 0x100482ba
xor eax, eax
xor edx, edx
mov dh, byte [ebx + 1]
add eax, 1
mov dl, byte [ebx + 2]
add ebx, edx
cmp byte [ebx], 0x42
jne 0x10048284
cmp eax, 2
jg 0x100485cd
cmp eax, 1
jne 0x100482ba
or edx, 0xffffffff
or eax, 0xffffffff
mov dword [esp + 0x80], edx
mov dword [esp + 0x88], eax
jmp 0x100482c8
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
cmp esi, 0x50
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x7c], 0
jge 0x100482f6
cmp esi, 0x4a
je 0x100482f6
cmp esi, 0x4b
je 0x100482f6
cmp esi, 0x45
jne 0x10048342
jmp 0x1004833a
cmp ecx, 0xfffffffe
jne 0x10048327
test eax, eax
jl 0x10048315
mov dword [esp + 0x28], eax
mov dword [esp + 0x7c], 1
mov dword [esp + 0x3c], 0xffffffff
jmp 0x1004833a
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x3c], 0xffffffff
jmp 0x1004833a
test eax, eax
jl 0x1004833a
test edx, edx
jge 0x1004833e
or eax, edi
mov edx, eax
mov dword [esp + 0x80], edx
test edx, edx
jl 0x10048342
mov dword [esp + 0x30], edx
mov edi, dword [esp + 0x10]
cmp edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x5c]
ja 0x1004835a
cmp word [edi], 0x29
je 0x10048562
mov eax, dword [esp + 0x4c]
mov dword [eax], 0xe
jmp 0x10048585
mov edx, dword [esp + 0x54]
mov eax, dword [ebp]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x20]
push esi
push edx
call fcn.10046550
mov edx, eax
add esp, 0x18
test edx, edx
jge 0x10048486
neg eax
cmp eax, 0x13
jne 0x100483f0
mov ecx, dword [esp + 0x10]
lea eax, [ecx + 4]
cmp eax, esi
jae 0x100483d0
cmp word [ecx + 2], 0x5c
jne 0x100483d0
cmp word [eax], 0x45
jne 0x100483d0
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x10], eax
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
xor ebp, ebp
jmp 0x10047070
add dword [esp + 0x10], 2
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x74], 1
xor ebp, ebp
jmp 0x10047070
mov ecx, dword [esp + 0x28]
cmp ecx, 0xfffffffe
jne 0x1004840a
cmp eax, 4
jle 0x1004840a
cmp eax, 0x10
jge 0x1004840a
or ecx, 0xffffffff
mov dword [esp + 0x28], ecx
cmp eax, 0x14
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
jl 0x10048451
mov esi, dword [esp + 0x78]
mov eax, 0xffffffec
sub eax, edx
mov byte [ebx], 0x3e
mov dword [esp + 0x18], ebx
add ebx, 1
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov edx, dword [esp + 0x50]
mov byte [ebx + 1], al
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
add ebx, 2
xor ebp, ebp
jmp 0x10047070
cmp eax, 4
jle 0x1004845f
cmp eax, 0x10
mov dword [esp + 0x18], ebx
jl 0x10048467
mov dword [esp + 0x18], 0
mov esi, dword [esp + 0x78]
neg dl
mov byte [ebx], dl
add dword [esp + 0x10], 2
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
add ebx, 1
xor ebp, ebp
jmp 0x10047070
cmp dword [esp + 0x48], 0
je 0x10048492
cmp edx, 0x7f
jg 0x100484ba
mov byte [esp + 0xb8], dl
mov esi, 1
jmp 0x100484c8
cmp ecx, 0x80
jge 0x100484b6
mov esi, 1
mov byte [esp + 0xb8], cl
jmp 0x100484c8
mov edx, dword [esp + 0x14]
lea eax, [esp + 0xb8]
call fcn.100589a0
mov esi, eax
cmp dword [esp + 0x58], 0
mov dword [esp + 0x18], ebx
setne al
add al, 0x15
mov byte [ebx], al
add ebx, 1
test esi, esi
jle 0x100484f3
push esi
lea ecx, [esp + 0xbc]
push ecx
push ebx
call fcn.1030ad1f
add esp, 0xc
add ebx, esi
mov eax, dword [esp + 0x28]
cmp eax, 0xfffffffe
mov edx, dword [esp + 0x30]
mov dword [esp + 0x40], edx
jne 0x1004853f
or eax, 0xffffffff
cmp esi, 1
mov dword [esp + 0x3c], eax
je 0x1004851d
cmp dword [esp + 0x68], 0
je 0x1004851d
mov dword [esp + 0x28], eax
jmp 0x1004855e
movzx eax, byte [esp + 0xb8]
or eax, dword [esp + 0x68]
cmp esi, 1
mov dword [esp + 0x28], eax
je 0x10048562
movzx eax, byte [ebx - 1]
mov ecx, dword [esp + 0x38]
or eax, dword [ecx + 0x2c]
jmp 0x1004855e
cmp esi, 1
mov dword [esp + 0x3c], eax
je 0x1004854f
cmp dword [esp + 0x68], 0
jne 0x10048562
movzx eax, byte [ebx - 1]
mov ecx, dword [esp + 0x38]
or eax, dword [ecx + 0x2c]
or eax, dword [esp + 0x68]
mov dword [esp + 0x30], eax
add dword [esp + 0x10], 2
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
xor ebp, ebp
jmp 0x10047070
mov dword [ebp], 7
mov edi, dword [esp + 0x10]
xor eax, eax
mov ecx, dword [esp + 0x90]
mov dword [ecx], edi
mov ecx, dword [esp + 0xe8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.102f2d37
add esp, 0xdc
ret
mov edx, dword [esp + 0x4c]
mov dword [edx], 9
jmp 0x10048585
mov eax, dword [esp + 0x4c]
mov dword [eax], 0xb
jmp 0x10048585
mov ecx, dword [esp + 0x4c]
mov dword [ecx], 0xc
jmp 0x10048585
mov edx, dword [esp + 0x4c]
mov dword [edx], 0x1b
jmp 0x10048581