Function at 0x10003650
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x50
push ebx
xor eax, eax
push ebp
mov ebp, dword [esp + 0x5c]
push esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
push edi
xor edi, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x3c], eax
dec eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], eax
mov eax, dword [ebp]
cmp dword [eax + 0x34], edi
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], edi
jle 0x10004425
jmp 0x100036a0
mov ebx, dword [esp + 0x14]
mov ecx, dword [eax + 4]
mov esi, dword [eax + 0x14]
lea ebx, [ebx + ebx*4]
shl ebx, 2
mov edx, dword [ecx + ebx + 8]
add edx, esi
test edi, edi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], edx
je 0x100036e9
mov edx, dword [eax + 0x4c]
mov dl, byte [edx + edi - 1]
test dl, dl
je 0x100036d2
cmp dl, 0x22
jne 0x100036e9
mov edx, dword [eax + 0x48]
movzx edx, word [edx + edi*2 - 2]
lea edx, [edx + edx*4]
mov edx, dword [ecx + edx*4 + 8]
add edx, esi
mov dword [esp + 0x18], edx
jmp 0x100036f1
mov dword [esp + 0x18], 0
mov edx, dword [eax + 0x4c]
cmp byte [edi + edx], 0
jne 0x10003716
cmp edi, dword [eax + 0x30]
jg 0x10003716
mov edx, dword [eax + 0x48]
movzx edx, word [edx + edi*2 + 2]
lea edx, [edx + edx*4]
mov edx, dword [ecx + edx*4 + 8]
add edx, esi
mov dword [esp + 0x24], edx
jmp 0x1000371e
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x10]
mov dl, byte [edx + 1]
cmp dl, 9
mov byte [esp + 0x64], dl
jne 0x1000374a
mov edx, dword [ecx + ebx + 0x10]
mov dl, byte [edx]
cmp dl, 0x20
je 0x1000440c
cmp dl, 0xd
jbe 0x1000440c
mov dl, byte [esp + 0x64]
and dword [esp + 0x5c], 0xfffffffe
mov esi, dword [ecx + ebx + 0xc]
add esi, dword [eax]
cmp dl, 9
mov byte [esp + 0x31], 0
mov dword [esp + 0x54], esi
jne 0x100038b8
cmp byte [esi], 0x22
mov dword [esp + 0x34], 0xffffffff
jne 0x10003a56
mov ecx, dword [ebp + 4]
mov edx, dword [ecx + 8]
test edx, edx
je 0x10003a56
mov edx, dword [eax + 4]
mov ecx, dword [edx + ebx + 0xc]
lea eax, [edx + ebx]
mov edx, dword [eax + 0x20]
inc ecx
cmp edx, ecx
jne 0x10003a56
movzx edx, byte [esi + 1]
push edx
call fcn.1009d4ef
add esp, 4
test eax, eax
jne 0x100038ab
mov al, byte [esi + 1]
cmp al, 0xe0
jb 0x100037c0
cmp al, 0xfc
jbe 0x100038ab
cmp al, 0xc0
jb 0x100037cc
cmp al, 0xdc
jbe 0x100038ab
mov edi, dword [esp + 0x14]
test edi, edi
je 0x10003a56
movzx eax, byte [esi - 1]
push eax
call fcn.1009d4ef
add esp, 4
test eax, eax
jne 0x10003830
mov al, byte [esi - 1]
cmp al, 0xe0
jb 0x100037f4
cmp al, 0xfc
jbe 0x10003830
cmp al, 0xc0
jb 0x100037fc
cmp al, 0xdc
jbe 0x10003830
cmp al, 0x2e
jne 0x10003a56
movzx ecx, byte [esi - 2]
push ecx
call fcn.1009d4ef
add esp, 4
test eax, eax
jne 0x10003830
mov al, byte [esi - 2]
cmp al, 0xe0
jb 0x10003820
cmp al, 0xfc
jbe 0x10003830
cmp al, 0xc0
jb 0x10003a56
cmp al, 0xdc
ja 0x10003a56
sub edi, dword [esp + 0x2c]
cmp edi, 2
jne 0x10003a56
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10003a56
cmp byte [eax + 1], 3
je 0x10003a56
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov eax, dword [eax]
lea edx, [ecx + ecx*2]
shl edx, 4
mov ecx, dword [edx + eax - 0x10]
lea esi, [edx + eax - 0x30]
movzx edx, byte [ecx]
push edx
call fcn.1009d52e
add esp, 4
test eax, eax
jne 0x1000388e
mov eax, dword [esi + 0x20]
mov al, byte [eax]
cmp al, 0xc0
jb 0x10003a56
cmp al, 0xdc
ja 0x10003a56
test byte [esi + 0x2c], 8
jne 0x10003a56
mov ecx, dword [esi + 0x28]
mov byte [esi], 3
mov byte [esi + 1], 0
mov byte [ecx + 1], 3
jmp 0x10003a56
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
jmp 0x10003a56
mov edx, dword [esp + 0x5c]
mov ecx, dword [eax + 0x38]
and edx, 0xfffffff7
cmp edi, ecx
mov dword [esp + 0x5c], edx
jg 0x10003936
mov ecx, dword [eax + 0x40]
mov esi, dword [ecx + edi*4]
inc edi
cmp esi, 0x989680
mov dword [esp + 0x34], esi
mov dword [esp + 0x28], edi
je 0x1000393e
dec edi
push edi
push eax
call fcn.10055310
test eax, eax
jne 0x1000393e
cmp esi, 0xec82e0
jne 0x10003a16
mov eax, dword [ebp]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + ebx + 0x10]
mov al, byte [ecx]
xor edx, edx
test al, al
je 0x10003a16
nop
cmp al, 0x20
jne 0x10003915
inc edx
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x10003910
test edx, edx
je 0x10003a16
mov eax, dword [esp + 0x1c]
lea ecx, [eax + edx + 1]
mov dword [esp + 0x1c], ecx
jmp 0x10003a16
mov dword [esp + 0x34], 0x989680
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov al, byte [edx + 1]
inc ecx
cmp al, 3
mov dword [esp + 0x1c], ecx
jne 0x10003a16
mov eax, dword [ebp]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + ebx + 0x10]
mov ecx, dword [eax + 0x20]
mov eax, dword [ebp + 0x14]
add edx, ecx
push edx
push eax
call fcn.1009b640
add esp, 8
cmp eax, 0xffffffff
je 0x10003a16
mov ecx, dword [ebp + 0x18]
mov al, byte [eax + ecx]
test al, 4
je 0x10003a16
test al, 1
jne 0x10003a16
mov edx, dword [esp + 0x10]
mov byte [edx + 1], 4
mov edx, dword [esp + 0x5c]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
or edx, 8
test ecx, ecx
mov dword [esp + 0x5c], edx
je 0x10003a16
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 4
jne 0x10003a16
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov eax, dword [ecx + edx - 0x10]
mov ecx, dword [ebp + 0x14]
push eax
push ecx
call fcn.1009b640
add esp, 8
cmp eax, 0xffffffff
je 0x10003a16
mov edx, dword [ebp + 0x18]
test byte [eax + edx], 1
je 0x10003a16
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov byte [ecx + edx - 0x30], 3
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov eax, dword [ecx + edx - 8]
mov byte [eax + 1], 3
mov eax, dword [esp + 0x10]
cmp byte [eax + 1], 8
jne 0x10003a56
cmp byte [eax + 6], 0x73
jne 0x10003a56
cmp byte [eax + 5], 0x74
jne 0x10003a56
mov ecx, dword [ebp]
mov edx, dword [ecx + 4]
mov esi, dword [edx + ebx + 0x10]
mov edi, 0x100a6494
mov ecx, 3
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10003a56
mov eax, dword [esp + 0x10]
mov cl, byte [eax + 3]
and cl, 0xfb
or cl, 8
mov byte [eax + 3], cl
mov ecx, dword [ebp]
mov edi, dword [esp + 0x10]
mov bl, byte [edi + 1]
xor edx, edx
mov dword [esp + 0x3c], edx
or eax, 0xffffffff
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x48], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x20]
add eax, edx
mov edx, dword [eax + 0x10]
add ecx, edx
mov esi, edx
mov dx, word [eax + 0xc]
movzx ax, byte [eax]
mov word [esp + 0x3a], ax
mov eax, dword [esp + 0x5c]
and eax, 0xfffffc0b
or eax, 2
cmp bl, 3
mov byte [esp + 0x30], bl
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], ecx
mov word [esp + 0x38], dx
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], eax
jne 0x10003b56
movzx ecx, byte [esi]
push ecx
call fcn.1009d4ef
add esp, 4
test eax, eax
jne 0x10003b56
mov al, byte [esi]
cmp al, 0xe0
jb 0x10003ae9
cmp al, 0xfc
jbe 0x10003b56
cmp al, 0xc0
jb 0x10003af1
cmp al, 0xdc
jbe 0x10003b56
movzx edx, al
push edx
call fcn.1009d5a2
add esp, 4
test eax, eax
jne 0x10003b56
mov al, byte [esi + 1]
inc esi
test al, al
je 0x10003b51
lea esp, [esp]
movzx eax, al
push eax
call fcn.1009d4ef
add esp, 4
test eax, eax
jne 0x10003b4c
mov al, byte [esi]
cmp al, 0xe0
jb 0x10003b2a
cmp al, 0xfc
jbe 0x10003b4c
cmp al, 0xc0
jb 0x10003b32
cmp al, 0xdc
jbe 0x10003b4c
movzx ecx, al
push ecx
call fcn.1009d5a2
add esp, 4
test eax, eax
jne 0x10003b4c
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x10003b10
jmp 0x10003b51
cmp byte [esi], 0
jne 0x10003b56
mov byte [esp + 0x30], 9
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
push edi
lea eax, [esp + 0x44]
push eax
push ebp
call fcn.10002790
mov al, byte [edi + 1]
mov esi, dword [esp + 0x50]
add esp, 0x1c
cmp al, 3
je 0x10003b88
cmp al, 4
jne 0x10003bbf
test byte [edi + 2], 0x60
jne 0x10003bbf
mov eax, dword [0x100b5944]
test eax, eax
je 0x10003bbf
mov ecx, dword [0x100b593c]
push 0x1001add0
push 4
push eax
push ecx
lea edx, [esp + 0x74]
push edx
mov dword [esp + 0x78], esi
call fcn.10040980
add esp, 0x14
test eax, eax
je 0x10003bbf
or byte [edi + 2], 0x60
mov al, byte [edi + 1]
cmp al, 3
je 0x10003bca
cmp al, 4
jne 0x10003c08
test byte [edi + 2], 0x60
jne 0x10003c08
mov eax, dword [0x100b5288]
test eax, eax
je 0x10003c08
push 0x1001add0
push 4
push eax
mov eax, dword [0x100b5280]
push eax
lea ecx, [esp + 0x74]
push ecx
mov dword [esp + 0x78], esi
call fcn.10040980
add esp, 0x14
test eax, eax
je 0x10003c08
mov dl, byte [edi + 2]
and dl, 0xdf
or dl, 0x40
mov byte [edi + 2], dl
cmp byte [edi + 1], 3
jne 0x10003c3b
mov eax, dword [0x100b54e8]
mov ecx, dword [0x100b54e0]
push 0x1001add0
push 4
push eax
push ecx
lea edx, [esp + 0x74]
push edx
mov dword [esp + 0x78], esi
call fcn.10040980
add esp, 0x14
test eax, eax
je 0x10003c3b
or byte [edi + 4], 0x1c
mov al, byte [edi + 1]
cmp al, 3
je 0x10003d6b
cmp al, 4
je 0x10003d6b
cmp al, 8
je 0x10003d6b
cmp al, 1
je 0x10003d6b
cmp al, 2
je 0x10003d6b
cmp al, 5
jne 0x10003d64
cmp byte [edi + 7], 0x56
jne 0x10003cfd
mov ecx, dword [ebp + 4]
mov eax, dword [ecx + 8]
dec eax
js 0x10003c9d
mov edx, dword [ecx]
lea ecx, [eax + eax*2]
shl ecx, 4
add ecx, edx
jmp 0x10003c90
cmp byte [ecx], 5
je 0x10003cd0
dec eax
sub ecx, 0x30
test eax, eax
jge 0x10003c90
mov bl, byte [esp + 0x31]
mov ecx, dword [esp + 0x10]
cmp byte [ecx + 8], 0x50
jne 0x10003f60
mov edx, ecx
mov al, byte [edx + 9]
test al, al
jne 0x10003d23
movzx eax, word [esp + 0x3a]
mov ecx, dword [esp + 0x4c]
cmp byte [eax + ecx - 1], 0x65
jne 0x10003d1b
or bl, 8
jmp 0x10003f5c
lea eax, [eax + eax*2]
shl eax, 4
mov ecx, dword [eax + edx + 0x28]
add eax, edx
cmp byte [ecx + 7], 0x43
jne 0x10003cf1
cmp byte [ecx + 4], 0x61
sete bl
inc bl
mov byte [esp + 0x31], bl
jmp 0x10003ca1
mov bl, byte [eax + 1]
and bl, 3
mov byte [esp + 0x31], bl
jmp 0x10003ca1
mov al, byte [edi + 4]
cmp al, 0x61
jne 0x10003d0c
mov bl, 2
mov byte [esp + 0x31], bl
jmp 0x10003ca1
cmp al, 0x65
setne bl
lea ebx, [ebx + ebx + 1]
mov byte [esp + 0x31], bl
jmp 0x10003ca1
or bl, 4
jmp 0x10003f5c
movzx edx, word [esp + 0x3a]
mov eax, dword [esp + 0x4c]
mov al, byte [edx + eax - 1]
cmp al, 0x6f
jne 0x10003d3c
or bl, 0x88
jmp 0x10003f5c
cmp al, 0x61
jne 0x10003d48
or bl, 0x48
jmp 0x10003f5c
cmp al, 0x69
jne 0x10003d54
or bl, 0x84
jmp 0x10003f5c
cmp al, 0x65
jne 0x10003f60
or bl, 0x44
jmp 0x10003f5c
xor bl, bl
jmp 0x10003f5c
mov bl, byte [esp + 0x31]
test bl, bl
jne 0x10003f3b
mov dl, byte [esp + 0x30]
cmp dl, 3
je 0x10003d89
cmp dl, 4
jne 0x10003ec5
cmp esi, 0x989680
jne 0x10003ec5
mov edi, dword [esp + 0x18]
test edi, edi
je 0x10003db9
mov al, byte [edi + 1]
cmp al, 4
je 0x10003db2
cmp al, 1
je 0x10003db2
cmp al, 2
jne 0x10003db9
test byte [edi + 4], 0x10
jne 0x10003db9
mov ecx, 1
jmp 0x10003dbb
xor ecx, ecx
mov esi, dword [esp + 0x24]
test esi, esi
mov dword [esp + 0x64], ecx
je 0x10003dda
cmp byte [esi + 1], 4
jne 0x10003dda
cmp byte [esi + 4], 0x63
je 0x10003dda
mov eax, 1
jmp 0x10003ddc
xor eax, eax
test ecx, ecx
jne 0x10003deb
test eax, eax
jne 0x10003deb
xor bl, bl
jmp 0x10003f37
mov ecx, dword [esp + 0x58]
mov al, byte [ecx + 2]
test al, al
js 0x10003e12
mov eax, dword [ebp]
mov edx, dword [eax + 4]
mov ecx, dword [esp + 0x20]
mov edx, dword [edx + ecx + 8]
mov eax, dword [eax + 0x14]
mov bl, byte [edx + eax + 3]
and bl, 0xcc
mov byte [esp + 0x31], bl
mov ecx, dword [esp + 0x54]
movzx edx, byte [ecx]
push edx
call fcn.1009d52e
add esp, 4
test eax, eax
jne 0x10003e34
mov eax, dword [esp + 0x54]
mov al, byte [eax]
cmp al, 0xc0
jb 0x10003e49
cmp al, 0xdc
ja 0x10003e49
mov ecx, dword [esp + 0x10]
mov dl, byte [ecx + 3]
and dl, 3
cmp dl, 1
je 0x10003f3f
jmp 0x10003e4d
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x64]
test eax, eax
je 0x10003e8d
mov al, byte [edi + 3]
and al, 0xcc
cmp bl, al
je 0x10003f3f
mov bl, byte [edi + 3]
mov al, byte [ecx + 3]
xor al, bl
and al, 0x3f
xor al, bl
mov byte [ecx + 3], al
mov dl, byte [edi + 3]
xor dl, al
and dl, 0xc
xor dl, al
mov byte [ecx + 3], dl
mov bl, byte [edi + 3]
and bl, 0xcc
mov byte [esp + 0x31], bl
jmp 0x10003f3f
mov al, byte [esi + 3]
and al, 0xcc
cmp bl, al
je 0x10003f3f
mov bl, byte [ecx + 3]
mov al, byte [esi + 3]
xor al, bl
mov bl, byte [esi + 3]
and al, 0x3f
xor al, bl
mov byte [ecx + 3], al
mov dl, byte [esi + 3]
xor dl, al
and dl, 0xc
xor dl, al
mov byte [ecx + 3], dl
mov bl, byte [esi + 3]
and bl, 0xcc
mov byte [esp + 0x31], bl
jmp 0x10003f3f
mov eax, dword [ebp]
mov ecx, dword [eax + 4]
mov esi, dword [esp + 0x20]
mov eax, dword [eax + 0x14]
mov ecx, dword [ecx + esi + 8]
mov bl, byte [ecx + eax + 3]
mov eax, dword [esp + 0x18]
and bl, 0xcc
test eax, eax
mov byte [esp + 0x31], bl
je 0x10003f1c
mov cl, byte [eax + 1]
cmp cl, 1
je 0x10003efc
cmp cl, 2
jne 0x10003f1c
test byte [eax + 4], 0x10
jne 0x10003f1c
test bl, 0xc0
jne 0x10003f0d
mov cl, byte [eax + 3]
and cl, 0xc0
or bl, cl
mov byte [esp + 0x31], bl
test bl, 0xc
jne 0x10003f3b
mov dl, byte [eax + 3]
and dl, 0xc
or bl, dl
jmp 0x10003f37
cmp dl, 3
jne 0x10003f3b
test eax, eax
je 0x10003f3b
cmp byte [eax + 1], 4
jne 0x10003f3b
test bl, 0xc
jne 0x10003f3b
mov al, byte [eax + 3]
and al, 0xc
or bl, al
mov byte [esp + 0x31], bl
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 1]
cmp al, 1
jne 0x10003f4f
mov edx, dword [esp + 0x4c]
cmp byte [edx], 0x75
je 0x10003f59
cmp al, 2
jne 0x10003f60
test byte [ecx + 4], 0x10
je 0x10003f60
or bl, 1
mov byte [esp + 0x31], bl
mov al, byte [esp + 0x30]
cmp al, 3
je 0x10003f70
cmp al, 4
jne 0x1000401b
mov ecx, dword [esp + 0x58]
mov dl, byte [ecx + 2]
test dl, dl
jns 0x1000401b
cmp al, 4
jne 0x1000401b
mov edx, dword [ebp + 4]
mov eax, dword [edx + 8]
test eax, eax
je 0x1000422e
mov eax, edx
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 3
jne 0x1000422e
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov eax, dword [ecx + edx - 8]
mov cl, byte [eax + 2]
test cl, cl
js 0x1000422e
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp bl, 4
mov al, byte [ecx + edx - 0x2f]
jne 0x1000422e
movzx ecx, word [esp + 0x3a]
mov edx, dword [esp + 0x4c]
cmp byte [ecx + edx - 1], 0x65
jne 0x10004284
cmp al, 0x88
jne 0x10004008
mov bl, al
mov byte [esp + 0x31], bl
jmp 0x10004284
cmp al, 0x48
jne 0x10004284
mov bl, al
mov byte [esp + 0x31], bl
jmp 0x10004284
cmp al, 3
jne 0x10004226
mov ax, word [esp + 0x3a]
cmp ax, 4
jne 0x1000405b
mov eax, dword [esp + 0x4c]
mov edi, str.mail
mov esi, eax
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10004094
mov esi, eax
mov edi, str.demo
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10004094
jmp 0x1000422e
cmp ax, 5
jne 0x1000407a
mov esi, dword [esp + 0x4c]
mov edi, str.email
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10004094
jmp 0x1000422e
cmp ax, 6
jne 0x100040e8
mov esi, dword [esp + 0x4c]
mov edi, str.e_mail
mov ecx, 7
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x1000410f
mov ecx, dword [ebp + 4]
mov eax, dword [ecx + 8]
and bl, 0xc
test eax, eax
mov byte [esp + 0x31], bl
je 0x100040e8
mov eax, ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax]
lea edx, [ecx + ecx*2]
shl edx, 4
cmp byte [edx + eax - 0x30], 1
je 0x100040ce
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 2
jne 0x100040e8
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov al, byte [ecx + edx - 0x2f]
and al, 0xc0
or bl, al
mov byte [esp + 0x31], bl
mov ax, word [esp + 0x3a]
cmp ax, 3
jne 0x10004109
mov esi, dword [esp + 0x4c]
mov edi, 0x100a6470
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10004127
jmp 0x10004181
cmp ax, 6
jne 0x10004179
mov esi, dword [esp + 0x4c]
mov edi, str.family
mov ecx, 7
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x1000422e
mov ecx, dword [ebp + 4]
mov eax, dword [ecx + 8]
xor bl, bl
test eax, eax
mov byte [esp + 0x31], bl
je 0x10004179
mov eax, ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax]
lea edx, [ecx + ecx*2]
shl edx, 4
cmp byte [edx + eax - 0x30], 1
je 0x10004160
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 2
jne 0x10004179
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov bl, byte [ecx + edx - 0x2f]
and bl, 0xcc
mov byte [esp + 0x31], bl
cmp word [esp + 0x3a], 3
jne 0x100041ae
mov eax, dword [esp + 0x4c]
mov edi, 0x100a6464
mov esi, eax
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x100041ca
mov esi, eax
mov edi, 0x100a6470
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x100041ca
jmp 0x1000422e
cmp word [esp + 0x3a], 9
jne 0x1000422e
mov esi, dword [esp + 0x4c]
mov edi, str.antivirus
mov ecx, 0xa
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x1000422e
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
mov byte [esp + 0x31], 0x80
je 0x10004382
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 1
je 0x10004208
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 2
jne 0x10004382
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov bl, byte [ecx + edx - 0x2f]
and bl, 0xc
or bl, 0x80
mov byte [esp + 0x31], bl
jmp 0x1000422e
cmp al, 4
jne 0x10004382
test bl, bl
jne 0x10004279
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x10004279
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 1
je 0x10004263
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 2
jne 0x10004279
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov bl, byte [ecx + edx - 0x2f]
mov byte [esp + 0x31], bl
cmp byte [esp + 0x30], 4
jne 0x10004382
mov eax, dword [esp + 0x58]
cmp byte [eax + 4], 0x71
jne 0x10004382
mov esi, dword [ebp]
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x20]
mov eax, dword [ecx + edx + 4]
mov ecx, dword [esi + 0x10]
add eax, 3
mov dl, byte [ecx + eax]
lea edi, [ecx + eax]
and dl, 0xe0
cmp dl, 0x80
jne 0x10004382
mov dl, byte [eax + ecx + 3]
add eax, ecx
xor dl, byte [eax + 2]
test dl, 0xf
jne 0x100042ef
test byte [edi + 2], 0xf
jne 0x100042ef
movzx eax, word [esp + 0x3a]
mov ecx, dword [esp + 0x4c]
mov al, byte [eax + ecx - 1]
cmp al, 0x65
jne 0x100042e1
mov bl, 8
jmp 0x100042eb
cmp al, 0x69
setne bl
dec bl
and ebx, 4
mov byte [esp + 0x31], bl
mov edx, dword [ebp + 4]
mov eax, dword [edx + 8]
test eax, eax
je 0x10004382
mov eax, edx
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 4
je 0x10004350
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 3
je 0x10004350
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 1
je 0x10004350
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp byte [ecx + edx - 0x30], 2
jne 0x10004382
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov al, byte [ecx + edx - 0x2f]
and al, 0xc
cmp al, bl
jne 0x10004382
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
mov al, byte [ecx + edx - 0x2f]
and al, 0xc0
or bl, al
mov byte [esp + 0x31], bl
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
inc ecx
cmp ecx, edx
jl 0x100043e3
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x100043b8
mov edi, edi
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x100043a0
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x10004390
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, edx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edi, dword [esp + 0x28]
inc ecx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [ebp]
mov edx, dword [eax + 0x34]
inc ecx
cmp ecx, edx
mov dword [esp + 0x14], ecx
jl 0x100036a0
xor edi, edi
mov ax, word [esp + 0x3a]
add word [esp + 0x38], ax
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
mov word [esp + 0x3a], di
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x5c]
or edi, 2
inc ecx
cmp ecx, edx
mov dword [esp + 0x34], 0xf42400
mov byte [esp + 0x30], 0xff
mov dword [esp + 0x5c], edi
jl 0x100044b7
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x1000448c
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x10004474
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x10004466
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov ebx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, ebx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
inc dword [eax + 8]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
inc ecx
cmp ecx, edx
jl 0x10004537
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x1000450c
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x100044f4
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x100044e6
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov ebx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, ebx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
inc dword [eax + 8]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
inc ecx
cmp ecx, edx
jl 0x100045b7
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x1000458c
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x10004574
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x10004566
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov ebx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, ebx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
inc dword [eax + 8]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
inc ecx
cmp ecx, edx
jl 0x10004637
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x1000460c
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x100045f4
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x100045e6
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov ebx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, ebx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
inc dword [eax + 8]
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
inc ecx
cmp ecx, edx
jl 0x100046b7
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jl 0x1000468c
mov eax, dword [ebp + 4]
movzx ecx, word [eax + 0xc]
add dword [eax + 4], ecx
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
inc edx
cmp edx, ecx
jge 0x10004674
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
push ecx
push edx
call fcn.10083ee0
mov ecx, dword [ebp + 4]
mov dword [ecx], eax
mov eax, dword [ebp + 4]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
add esp, 8
inc edx
cmp edx, ecx
jge 0x10004666
mov eax, dword [ebp + 4]
mov ecx, dword [eax + 8]
mov ebx, dword [eax]
lea edi, [ecx + ecx*2]
shl edi, 4
add edi, ebx
mov ecx, 0xc
lea esi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 4]
inc dword [eax + 8]
mov eax, dword [ebp + 4]
add dword [eax + 8], 0xfffffffc
mov eax, dword [ebp + 4]
cmp dword [eax + 8], 8
mov ecx, eax
mov eax, dword [ecx + 8]
jle 0x10004920
mov ecx, dword [esp + 0x1c]
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
jle 0x1000491a
mov eax, dword [ebp + 4]
mov edx, dword [eax]
mov eax, dword [eax + 8]
test eax, eax
je 0x10004928
mov dword [esp + 0x64], eax
mov al, byte [edx]
cmp al, 3
jb 0x10004908
cmp al, 5
ja 0x10004908
mov eax, dword [edx + 0x1c]
mov edi, 0x100a6454
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048f7
mov edi, 0x100a6450
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048f7
mov edi, 0x100a63f8
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048f7
mov edi, 0x100a644c
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048eb
mov edi, 0x100a6448
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048eb
mov edi, 0x100a6444
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048eb
mov edi, str.this
mov esi, eax
mov ecx, 5
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048df
mov edi, str.that
mov esi, eax
mov ecx, 5
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048df
mov edi, 0x100a6430
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048d3
mov edi, 0x100a642c
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048d3
mov edi, 0x100a6428
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048d3
mov edi, 0x100a6424
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, 0x100a6420
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, 0x100a641c
mov esi, eax
mov ecx, 4
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, 0x100a6418
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, str.from
mov esi, eax
mov ecx, 5
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, 0x100a640c
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, str.with
mov esi, eax
mov ecx, 5
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov edi, 0x100a6400
mov esi, eax
mov ecx, 3
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
je 0x100048c7
mov esi, eax
mov edi, 0x100a63fc
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10004908
mov ecx, dword [edx + 0x28]
mov byte [ecx + 1], 2
mov byte [edx], 2
jmp 0x10004901
mov eax, dword [edx + 0x28]
mov byte [eax + 1], 6
mov byte [edx], 6
jmp 0x10004901
mov ecx, dword [edx + 0x28]
mov byte [ecx + 1], 4
mov byte [edx], 4
jmp 0x10004901
mov eax, dword [edx + 0x28]
mov byte [eax + 1], 1
mov byte [edx], 1
jmp 0x10004901
mov ecx, dword [edx + 0x28]
mov byte [ecx + 1], 5
mov byte [edx], 5
mov dword [edx + 4], 0x989680
mov eax, dword [esp + 0x64]
add edx, 0x30
dec eax
mov dword [esp + 0x64], eax
jne 0x10004716
mov edx, dword [ebp + 4]
mov eax, dword [edx + 8]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
mov eax, dword [ebp + 4]
mov eax, dword [eax + 8]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret