Function at 0x40ac20
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xb4
push ebx
push ebp
push esi
push edi
mov edi, dword [0x473a28]
mov ebp, ecx
lea ecx, [esp + 0x58]
mov dword [esp + 0x50], ebp
mov dword [esp + 0x48], edi
call fcn.0042f240
mov byte [esp + 0x13], 0
xor esi, esi
call fcn.00446290
mov byte [esp + esi + 0x6c], al
inc esi
cmp esi, 0xe
jl 0x40ac4a
mov eax, dword [esp + 0x6e]
mov cl, byte [esp + 0x6c]
cmp cl, 0x42
lea ebx, [eax - 0xe]
jne 0x40ac79
cmp byte [esp + 0x6d], 0x4d
jne 0x40ac79
cmp ebx, 0x1e
jge 0x40b2a7
cmp esi, 0x58
mov dword [esp + 0x28], edi
jge 0x40ac95
call fcn.00446290
mov byte [esp + esi + 0x6c], al
inc esi
cmp esi, 0x58
jl 0x40ac82
mov eax, dword [esp + 0x6e]
mov edx, dword [esp + 0x7c]
cmp edx, 0x28
jle 0x40ae1d
cmp byte [esp + 0x6c], 0x52
jne 0x40ae1d
mov bl, byte [esp + 0x6d]
mov cl, 0x49
cmp bl, cl
jne 0x40ae1d
cmp al, 0x46
jne 0x40ae1d
cmp ah, al
jne 0x40ae1d
cmp byte [esp + 0x74], 0x41
jne 0x40ae1d
cmp byte [esp + 0x75], 0x56
jne 0x40ae1d
cmp byte [esp + 0x76], cl
jne 0x40ae1d
cmp byte [esp + 0x77], 0x20
jne 0x40ae1d
cmp byte [esp + 0x78], 0x4c
jne 0x40ae1d
cmp byte [esp + 0x79], cl
jne 0x40ae1d
cmp byte [esp + 0x7a], 0x53
jne 0x40ae1d
cmp byte [esp + 0x7b], 0x54
jne 0x40ae1d
mov cl, byte [esp + 0x80]
mov al, 0x68
cmp cl, al
jne 0x40ae1d
cmp byte [esp + 0x81], 0x64
jne 0x40ae1d
cmp byte [esp + 0x82], 0x72
jne 0x40ae1d
cmp byte [esp + 0x83], 0x6c
jne 0x40ae1d
cmp byte [esp + 0x84], 0x61
jne 0x40ae1d
cmp byte [esp + 0x85], 0x76
jne 0x40ae1d
cmp byte [esp + 0x86], 0x69
jne 0x40ae1d
cmp byte [esp + 0x87], al
jne 0x40ae1d
mov ecx, dword [esp + 0xac]
cmp ecx, 4
jle 0x40ae1d
cmp ecx, 0x8000
jg 0x40ae1d
mov eax, dword [esp + 0xb0]
cmp eax, 4
jle 0x40ae1d
cmp eax, 0x8000
jg 0x40ae1d
mov dword [0x4702dc], eax
mov eax, dword [0x473a28]
mov dword [0x4702d8], ecx
xor esi, esi
lea ecx, [eax + edx - 0x44]
mov dword [0x473a28], ecx
call fcn.00446290
mov byte [esp + esi + 0x6c], al
inc esi
cmp esi, 0xc
jl 0x40add6
cmp byte [esp + 0x6c], 0x4a
jne 0x40ae14
cmp byte [esp + 0x6d], 0x55
jne 0x40ae14
mov eax, dword [esp + 0x6e]
cmp al, 0x4e
jne 0x40ae14
cmp ah, 0x4b
jne 0x40ae14
mov eax, dword [esp + 0x70]
test eax, eax
jle 0x40ae14
mov edx, dword [0x473a28]
lea eax, [edx + eax + 8]
jmp 0x40ae19
mov eax, dword [0x473a28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
xor esi, esi
mov dword [0x473a28], eax
call fcn.00446290
mov byte [esp + esi + 0x6c], al
inc esi
cmp esi, 8
jl 0x40ae28
mov ecx, dword [esp + 0x70]
mov edx, dword [0x473a28]
mov bl, byte [esp + 0x6d]
mov edi, ecx
lea eax, [ecx + edx]
mov dl, byte [esp + 0x6c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x6e]
test ecx, ecx
jl 0x40b225
cmp dl, 0x30
jne 0x40ae84
cmp al, 0x64
jne 0x40ae6e
cmp ah, 0x63
jne 0x40ae97
jmp 0x40ae1d
cmp al, 0x70
jne 0x40ae79
cmp ah, 0x63
jne 0x40ae97
jmp 0x40ae1d
cmp al, 0x77
jne 0x40ae97
cmp ah, 0x62
jne 0x40ae97
jmp 0x40ae1d
cmp dl, 0x4a
jne 0x40ae97
cmp bl, 0x55
jne 0x40ae97
cmp al, 0x4e
jne 0x40ae97
cmp ah, 0x4b
je 0x40ae1d
test ecx, ecx
jl 0x40b225
cmp dl, 0x30
jne 0x40b225
cmp al, 0x64
jne 0x40b225
cmp ah, 0x62
jne 0x40b225
mov esi, dword [0x4702dc]
imul esi, dword [0x4702d8]
shl esi, 1
cmp ecx, esi
jle 0x40aece
mov edi, esi
mov ecx, esi
call fcn.00435b70
mov ebx, eax
push edi
push ebx
mov dword [esp + 0x20], ebx
call fcn.00446380
add esp, 8
cmp edi, esi
jge 0x40aeff
mov ecx, esi
xor eax, eax
sub ecx, edi
add edi, ebx
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4702dc]
mov ecx, dword [0x4702d8]
push eax
push ecx
mov ecx, ebp
call fcn.00408ff0
mov al, byte [0x470d94]
xor edx, edx
test al, al
mov dword [esp + 0x48], edx
je 0x40af57
mov eax, dword [0x4702d8]
lea ecx, [eax + eax*2 + 6]
shl ecx, 2
call fcn.00435b70
mov edx, eax
mov eax, dword [0x4702d8]
mov edi, edx
mov dword [esp + 0x48], edx
lea ecx, [eax + eax*2 + 6]
xor eax, eax
shl ecx, 2
mov esi, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x50]
mov ebp, dword [0x4702d8]
mov dword [esp + 0x34], ebx
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
lea ecx, [ebp + ebp]
mov dword [esp + 0x50], eax
lea eax, [ecx + 3]
and al, 0xfc
sub eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [0x4702dc]
test eax, eax
jle 0x40b201
mov dword [esp + 0x4c], eax
mov al, byte [0x470d94]
test al, al
je 0x40b147
mov ecx, dword [esp + 0x48]
add ecx, 0xc
test ebp, ebp
jle 0x40b1dc
mov dword [esp + 0x54], ebp
mov esi, dword [esp + 0x34]
mov edi, dword [ecx - 8]
mov dx, word [esi]
add esi, 2
mov al, dl
mov dword [esp + 0x14], edx
shr word [esp + 0x14], 5
and al, 0x1f
mov dword [esp + 0x34], esi
mov dl, al
mov esi, dword [ecx + 0xc]
shr al, 2
shl dl, 3
add dl, al
mov al, byte [esp + 0x14]
and al, 0x1f
mov byte [esp + 0x20], dl
mov dl, al
mov ebx, dword [esp + 0x20]
shl dl, 3
shr al, 2
add dl, al
mov eax, dword [esp + 0x14]
shr eax, 5
and al, 0x1f
mov byte [esp + 0x40], dl
mov dl, al
and ebx, 0xff
shl dl, 3
shr al, 2
add dl, al
mov eax, dword [ecx - 0xc]
mov byte [esp + 0x3c], dl
mov edx, dword [ecx]
add eax, esi
mov esi, ebx
add eax, edx
mov ebp, dword [esp + 0x40]
and ebp, 0xff
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 4]
sar eax, 3
sub esi, eax
mov eax, dword [ecx + 0x10]
add eax, edi
mov edi, ebp
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 8]
sar eax, 3
sub edi, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0x14]
add eax, edx
mov edx, dword [ecx - 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add edx, eax
mov eax, dword [esp + 0x24]
sar edx, 3
sub eax, edx
test esi, esi
jge 0x40b084
xor esi, esi
jmp 0x40b091
cmp esi, 0xff
jle 0x40b091
mov esi, 0xff
test edi, edi
jge 0x40b099
xor edi, edi
jmp 0x40b0a6
cmp edi, 0xff
jle 0x40b0a6
mov edi, 0xff
test eax, eax
jge 0x40b0ae
xor eax, eax
jmp 0x40b0ba
cmp eax, 0xff
jle 0x40b0ba
mov eax, 0xff
and esi, 0xff
and edi, 0xff
shr esi, 2
shr edi, 2
shl esi, 0xc
shl edi, 6
and eax, 0xff
or esi, edi
shr eax, 2
or esi, eax
mov eax, dword [0x472da8]
add ecx, 4
mov al, byte [esi + eax]
mov esi, dword [0x472d70]
mov byte [esp + 0x38], al
add ecx, 4
mov edx, dword [esp + 0x38]
add ecx, 4
and edx, 0xff
lea esi, [esi + edx*4 + 0x28]
xor edx, edx
mov dl, byte [esi]
sub edx, ebx
mov ebx, dword [esp + 0x24]
mov dword [ecx - 0xc], edx
xor edx, edx
mov dl, byte [esi + 1]
sub edx, ebp
mov dword [ecx - 8], edx
xor edx, edx
mov dl, byte [esi + 2]
sub edx, ebx
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x50]
mov byte [edx], al
mov eax, dword [esp + 0x54]
inc edx
dec eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
jne 0x40afae
jmp 0x40b1d6
test ebp, ebp
jle 0x40b1dc
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x50]
mov ax, word [esi]
add esi, 2
mov cl, al
mov dword [esp + 0x14], eax
shr word [esp + 0x14], 5
mov dl, byte [esp + 0x14]
mov eax, dword [esp + 0x14]
and cl, 0x1f
and dl, 0x1f
mov bl, cl
mov dword [esp + 0x34], esi
shl bl, 3
shr cl, 2
add bl, cl
mov cl, dl
shr eax, 5
shl cl, 3
shr dl, 2
and al, 0x1f
add cl, dl
mov dl, al
and ebx, 0xff
and ecx, 0xff
shl dl, 3
shr al, 2
shr ebx, 2
shr ecx, 2
add dl, al
mov eax, dword [0x472da8]
shl ebx, 0xc
shl ecx, 6
and edx, 0xff
or ebx, ecx
shr edx, 2
or ebx, edx
inc edi
dec ebp
mov dword [esp + 0x50], edi
mov cl, byte [ebx + eax]
mov byte [edi - 1], cl
jne 0x40b157
mov ebp, dword [0x4702d8]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
add ecx, edx
dec eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], eax
jne 0x40af8e
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x18]
mov ecx, edx
call fcn.00435be0
mov ecx, ebx
call fcn.00435be0
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov dword [0x473a28], eax
pop ebx
add esp, 0xb4
ret 4
mov esi, dword [esp + 0x48]
cmp dl, 0xff
mov dword [0x473a28], esi
jne 0x40c16c
cmp bl, 0xd8
jne 0x40c16c
cmp al, dl
jne 0x40c16c
lea ecx, [esp + 0x58]
push ecx
call fcn.0041f7a0
add esp, 4
test eax, eax
je 0x40c16c
mov ecx, dword [esp + 0x5c]
cmp ecx, 0x28
jl 0x40c16c
mov eax, dword [esp + 0x58]
cmp byte [eax], 0x42
jne 0x40c16c
cmp byte [eax + 1], 0x4d
jne 0x40c16c
mov ebx, dword [eax + 2]
cmp ebx, ecx
jg 0x40c16c
cmp ebx, 0x2c
jl 0x40c16c
lea esi, [eax + 0xe]
add ebx, 0xfffffff2
mov byte [esp + 0x13], 1
mov dword [esp + 0x30], esi
jmp 0x40b2cb
mov ecx, ebx
call fcn.00435b70
mov esi, eax
mov ecx, 7
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
push ebx
push esi
mov dword [esp + 0x38], esi
stosw word es:[edi], ax
call fcn.00446380
add esp, 8
push esi
call fcn.0041fa00
add esp, 4
test eax, eax
jne 0x40b309
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x58]
test al, al
jne 0x40b2e6
mov ecx, esi
call fcn.00435be0
mov edx, dword [esp + 0x48]
pop edi
pop esi
pop ebp
mov dword [0x473a28], edx
mov byte [0x473a18], 1
pop ebx
add esp, 0xb4
ret 4
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
mov dword [esp + 0x14], ecx
xor ecx, ecx
mov cx, word [esi + 0xe]
mov esi, dword [esi + 0x20]
test esi, esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x24], esi
jg 0x40b337
mov eax, 1
shl eax, cl
mov dword [esp + 0x24], eax
cmp ecx, 8
jle 0x40b344
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x24]
lea ebp, [edx*4 + 0x28]
sub ebx, ebp
mov dword [esp + 0x28], ebx
jns 0x40b35f
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x10], 1
jne 0x40b3ef
mov ecx, dword [esp + 0x1c]
lea ebx, [ecx + 3]
and ebx, 0xfffffffc
imul ebx, dword [esp + 0x14]
lea ecx, [ebx + ebp + 0x2710]
call fcn.00435b70
mov esi, dword [esp + 0x30]
mov ecx, ebp
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x30]
and ecx, 3
mov dword [esp + 0x20], eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x10], 0
push ecx
lea ecx, [edx + ebp]
push ecx
add eax, ebp
push ebx
push eax
call fcn.0041fa80
mov al, byte [esp + 0x23]
add esp, 0x10
test al, al
je 0x40b3da
mov ecx, dword [esp + 0x58]
call fcn.00435be0
mov byte [esp + 0x13], 0
jmp 0x40b3e3
mov ecx, dword [esp + 0x30]
call fcn.00435be0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x10], 2
jne 0x40b485
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + 1]
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
add ebx, 3
and ebx, 0xfffffffc
imul ebx, dword [esp + 0x14]
lea ecx, [ebx + ebp + 0x2710]
call fcn.00435b70
mov esi, dword [esp + 0x30]
mov ecx, ebp
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x30]
and ecx, 3
mov dword [esp + 0x20], eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x10], 0
push ecx
lea ecx, [edx + ebp]
push ecx
add eax, ebp
push ebx
push eax
call fcn.0041fbc0
mov al, byte [esp + 0x23]
add esp, 0x10
test al, al
je 0x40b474
mov ecx, dword [esp + 0x58]
call fcn.00435be0
mov byte [esp + 0x13], 0
jmp 0x40b47d
mov ecx, dword [esp + 0x30]
call fcn.00435be0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0x50]
lea ecx, [esp + 0x68]
push esi
call fcn.004088b0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
mov ecx, esi
call fcn.00408ff0
cmp dword [esp + 0x48], 8
jg 0x40b4b8
mov edx, dword [esp + 0x30]
push edx
call fcn.004303a0
add esp, 4
mov al, byte [0x470d94]
mov ebx, dword [esp + 0x1c]
test al, al
mov dword [esp + 0x28], 0
je 0x40b4f3
lea esi, [ebx + ebx*2 + 6]
shl esi, 2
mov ecx, esi
call fcn.00435b70
mov ecx, esi
mov edi, eax
mov edx, ecx
xor eax, eax
shr ecx, 2
mov dword [esp + 0x28], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x30]
add ebp, edx
mov ecx, dword [eax]
mov eax, dword [esp + 0x48]
dec eax
mov dword [esp + 0x64], ebp
mov edi, dword [ecx + 0x10]
cmp eax, 0x1f
mov dword [esp + 0x2c], edi
mov esi, ebp
ja case.0x40b522.7
xor ecx, ecx
mov cl, byte [eax + 0x40c1a4]
jmp dword [ecx*4 + 0x40c188]
lea eax, [ebx + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
and al, 0xfc
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
test eax, eax
jle case.0x40b522.7
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
xor ebx, ebx
test ebp, ebp
jle 0x40b587
mov dl, bl
mov cl, 7
and dl, 7
mov eax, ebx
sub cl, dl
cdq
and edx, 7
add eax, edx
xor edx, edx
sar eax, 3
mov dl, byte [eax + esi]
mov eax, dword [0x472eac]
shr edx, cl
and edx, 1
inc edi
inc ebx
mov cl, byte [edx + eax]
cmp ebx, ebp
mov byte [edi - 1], cl
jl 0x40b558
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
add esi, ecx
dec eax
mov dword [esp + 0x24], eax
jne 0x40b552
jmp case.0x40b522.7
lea eax, [ebx + 1]
cdq
sub eax, edx
mov ebp, eax
mov eax, dword [esp + 0x14]
sar ebp, 1
add ebp, 3
and ebp, 0xfffffffc
test eax, eax
jle case.0x40b522.7
mov ebx, eax
mov eax, dword [esp + 0x1c]
xor ecx, ecx
test eax, eax
jle 0x40b5fa
mov eax, ecx
test cl, 1
cdq
je 0x40b5d9
sub eax, edx
sar eax, 1
mov dl, byte [eax + esi]
and edx, 0xf
jmp 0x40b5e5
sub eax, edx
xor edx, edx
sar eax, 1
mov dl, byte [eax + esi]
shr edx, 4
mov eax, dword [0x472eac]
inc edi
inc ecx
mov dl, byte [edx + eax]
mov eax, dword [esp + 0x1c]
mov byte [edi - 1], dl
cmp ecx, eax
jl 0x40b5c5
add esi, ebp
dec ebx
jne 0x40b5bf
jmp case.0x40b522.7
mov eax, dword [esp + 0x14]
lea edx, [ebx + 3]
and edx, 0xfffffffc
sub edx, ebx
test eax, eax
mov dword [esp + 0x4c], edx
jle case.0x40b522.7
mov dword [esp + 0x20], eax
mov al, byte [0x470d94]
test al, al
je 0x40b810
mov eax, dword [esp + 0x28]
test ebx, ebx
lea ecx, [eax + 0xc]
jle 0x40b845
mov dword [esp + 0x40], ebx
mov dl, byte [esi]
mov ebp, dword [esp + 0x24]
mov byte [esp + 0x54], dl
inc esi
mov eax, dword [esp + 0x54]
mov edx, eax
and edx, 0xff
cmp edx, ebp
jl 0x40b664
mov byte [esp + 0x54], 0
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
and eax, 0xff
lea eax, [edx + eax*4 + 0x28]
mov edx, dword [eax]
and edx, 0xffffff
cmp edx, 0x95228c
jne 0x40b6a3
xor al, al
mov dword [ecx], 0
add ecx, 4
mov dword [ecx], 0
add ecx, 4
mov dword [ecx], 0
add ecx, 4
jmp 0x40b7f8
cmp edx, 0x611e6f
jne 0x40b6af
mov al, 1
jmp 0x40b683
mov dl, byte [eax]
mov ebp, dword [ecx]
mov byte [esp + 0x44], dl
mov dl, byte [eax + 1]
mov al, byte [eax + 2]
mov byte [esp + 0x38], dl
mov edx, dword [ecx + 0xc]
mov byte [esp + 0x3c], al
mov eax, dword [ecx - 0xc]
mov ebx, dword [esp + 0x44]
add eax, edx
and ebx, 0xff
add eax, ebp
mov edi, ebx
mov ebp, dword [esp + 0x38]
lea eax, [eax + eax*4]
and ebp, 0xff
cdq
and edx, 7
mov dword [esp + 0x34], ebp
add eax, edx
mov edx, dword [ecx - 8]
sar eax, 3
sub edi, eax
mov eax, dword [ecx + 0x10]
add eax, edx
mov edx, dword [ecx + 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 8]
sar eax, 3
sub ebp, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x14]
add eax, edx
mov edx, dword [ecx - 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add edx, eax
mov eax, dword [esp + 0x18]
sar edx, 3
sub eax, edx
test edi, edi
jge 0x40b746
xor edi, edi
jmp 0x40b753
cmp edi, 0xff
jle 0x40b753
mov edi, 0xff
test ebp, ebp
jge 0x40b75b
xor ebp, ebp
jmp 0x40b768
cmp ebp, 0xff
jle 0x40b768
mov ebp, 0xff
test eax, eax
jge 0x40b770
xor eax, eax
jmp 0x40b77c
cmp eax, 0xff
jle 0x40b77c
mov eax, 0xff
and edi, 0xff
and ebp, 0xff
shr edi, 2
shr ebp, 2
shl edi, 0xc
shl ebp, 6
and eax, 0xff
or edi, ebp
shr eax, 2
or edi, eax
mov eax, dword [0x472da8]
mov ebp, dword [esp + 0x34]
add ecx, 4
mov dl, byte [edi + eax]
mov edi, dword [esp + 0x18]
mov byte [esp + 0x54], dl
mov edx, dword [0x472d70]
mov eax, dword [esp + 0x54]
add ecx, 4
and eax, 0xff
lea eax, [edx + eax*4 + 0x28]
xor edx, edx
mov dl, byte [eax]
sub edx, ebx
mov ebx, dword [esp + 0x1c]
mov dword [ecx - 8], edx
xor edx, edx
mov dl, byte [eax + 1]
sub edx, ebp
mov dword [ecx - 4], edx
xor edx, edx
mov dl, byte [eax + 2]
mov al, byte [esp + 0x54]
sub edx, edi
mov edi, dword [esp + 0x2c]
mov dword [ecx], edx
add ecx, 4
mov byte [edi], al
mov eax, dword [esp + 0x40]
inc edi
dec eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x40], eax
jne 0x40b640
jmp 0x40b841
test ebx, ebx
mov eax, esi
jle 0x40b833
mov ebp, dword [esp + 0x1c]
mov ecx, edi
sub ecx, esi
mov ebx, dword [0x472eac]
xor edx, edx
mov dl, byte [eax]
inc eax
dec ebp
mov dl, byte [edx + ebx]
mov byte [eax + ecx - 1], dl
jne 0x40b81e
mov eax, dword [esp + 0x1c]
add esi, eax
add edi, eax
mov dword [esp + 0x2c], edi
mov ebx, eax
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x20]
add esi, edx
dec eax
mov dword [esp + 0x20], eax
jne 0x40b620
jmp case.0x40b522.7
lea ecx, [ebx + ebx]
lea eax, [ecx + 3]
and al, 0xfc
sub eax, ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
test eax, eax
jle case.0x40b522.7
mov dword [esp + 0x40], eax
mov al, byte [0x470d94]
test al, al
je 0x40ba34
mov eax, dword [esp + 0x28]
lea ecx, [eax + 0xc]
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x40bac0
mov edx, eax
mov dword [esp + 0x20], edx
mov ax, word [esi]
mov ebp, dword [ecx]
mov dword [esp + 0x18], eax
and al, 0x1f
shr word [esp + 0x18], 5
mov dl, al
add esi, 2
shr al, 2
shl dl, 3
add dl, al
mov al, byte [esp + 0x18]
and al, 0x1f
mov byte [esp + 0x44], dl
mov dl, al
mov ebx, dword [esp + 0x44]
shl dl, 3
shr al, 2
add dl, al
mov eax, dword [esp + 0x18]
shr eax, 5
and al, 0x1f
mov byte [esp + 0x38], dl
mov dl, al
and ebx, 0xff
shl dl, 3
shr al, 2
add dl, al
mov eax, dword [ecx - 0xc]
mov byte [esp + 0x3c], dl
mov edx, dword [ecx + 0xc]
add eax, edx
mov edi, ebx
add eax, ebp
mov ebp, dword [esp + 0x38]
and ebp, 0xff
lea eax, [eax + eax*4]
mov dword [esp + 0x34], ebp
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx - 8]
sar eax, 3
sub edi, eax
mov eax, dword [ecx + 0x10]
add eax, edx
mov edx, dword [ecx + 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 8]
sar eax, 3
sub ebp, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x14]
add eax, edx
mov edx, dword [ecx - 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add edx, eax
mov eax, dword [esp + 0x18]
sar edx, 3
sub eax, edx
test edi, edi
jge 0x40b96d
xor edi, edi
jmp 0x40b97a
cmp edi, 0xff
jle 0x40b97a
mov edi, 0xff
test ebp, ebp
jge 0x40b982
xor ebp, ebp
jmp 0x40b98f
cmp ebp, 0xff
jle 0x40b98f
mov ebp, 0xff
test eax, eax
jge 0x40b997
xor eax, eax
jmp 0x40b9a3
cmp eax, 0xff
jle 0x40b9a3
mov eax, 0xff
and edi, 0xff
and ebp, 0xff
shr edi, 2
shr ebp, 2
shl edi, 0xc
shl ebp, 6
and eax, 0xff
or edi, ebp
shr eax, 2
or edi, eax
mov eax, dword [0x472da8]
mov ebp, dword [esp + 0x18]
add ecx, 4
mov al, byte [edi + eax]
mov edi, dword [0x472d70]
mov byte [esp + 0x24], al
add ecx, 4
mov edx, dword [esp + 0x24]
add ecx, 4
and edx, 0xff
lea edi, [edi + edx*4 + 0x28]
xor edx, edx
mov dl, byte [edi]
sub edx, ebx
mov ebx, dword [esp + 0x34]
mov dword [ecx - 0xc], edx
xor edx, edx
mov dl, byte [edi + 1]
sub edx, ebx
mov dword [ecx - 8], edx
xor edx, edx
mov dl, byte [edi + 2]
sub edx, ebp
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x2c]
mov byte [edx], al
mov eax, dword [esp + 0x20]
inc edx
dec eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], eax
jne 0x40b89f
jmp 0x40bac0
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x40bac0
mov edi, eax
mov ax, word [esi]
add esi, 2
mov cl, al
mov dword [esp + 0x18], eax
shr word [esp + 0x18], 5
mov dl, byte [esp + 0x18]
mov eax, dword [esp + 0x18]
and cl, 0x1f
and dl, 0x1f
mov bl, cl
shl bl, 3
shr cl, 2
add bl, cl
mov cl, dl
shr eax, 5
shl cl, 3
shr dl, 2
and al, 0x1f
add cl, dl
mov dl, al
and ebx, 0xff
and ecx, 0xff
shl dl, 3
shr al, 2
shr ebx, 2
shr ecx, 2
add dl, al
mov eax, dword [0x472da8]
shl ebx, 0xc
shl ecx, 6
and edx, 0xff
or ebx, ecx
shr edx, 2
or ebx, edx
mov cl, byte [ebx + eax]
mov eax, dword [esp + 0x2c]
mov byte [eax], cl
inc eax
dec edi
mov dword [esp + 0x2c], eax
jne 0x40ba42
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x40]
add esi, ecx
dec eax
mov dword [esp + 0x40], eax
jne 0x40b879
jmp case.0x40b522.7
mov eax, dword [esp + 0x14]
lea ebp, [ebx + ebx*2 + 3]
and ebp, 0xfffffffc
lea edx, [ebx + ebx*2]
sub ebp, edx
test eax, eax
mov dword [esp + 0x4c], ebp
jle case.0x40b522.7
mov dword [esp + 0x24], eax
mov al, byte [0x470d94]
test al, al
je 0x40bcc6
mov eax, dword [esp + 0x28]
test ebx, ebx
lea ecx, [eax + 0xc]
jle 0x40bd48
mov dword [esp + 0x40], ebx
mov eax, dword [esi]
and eax, 0xffffff
cmp eax, 0x95228c
jne 0x40bb4e
mov byte [edi], 0
mov dword [ecx], 0
add ecx, 4
add esi, 3
mov dword [ecx], 0
add ecx, 4
mov dword [ecx], 0
add ecx, 4
jmp 0x40bcad
cmp eax, 0x611e6f
jne 0x40bb5a
mov byte [edi], 1
jmp 0x40bb2b
mov dl, byte [esi]
mov al, byte [esi + 1]
inc esi
mov ebp, dword [ecx]
inc esi
mov byte [esp + 0x44], dl
mov byte [esp + 0x38], al
mov eax, dword [ecx - 0xc]
mov dl, byte [esi]
mov ebx, dword [esp + 0x44]
mov byte [esp + 0x3c], dl
mov edx, dword [ecx + 0xc]
add eax, edx
and ebx, 0xff
add eax, ebp
mov edi, ebx
mov ebp, dword [esp + 0x38]
inc esi
lea eax, [eax + eax*4]
and ebp, 0xff
cdq
and edx, 7
mov dword [esp + 0x34], ebp
add eax, edx
mov edx, dword [ecx - 8]
sar eax, 3
sub edi, eax
mov eax, dword [ecx + 0x10]
add eax, edx
mov edx, dword [ecx + 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 8]
sar eax, 3
sub ebp, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x14]
add eax, edx
mov edx, dword [ecx - 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add edx, eax
mov eax, dword [esp + 0x18]
sar edx, 3
sub eax, edx
test edi, edi
jge 0x40bbf3
xor edi, edi
jmp 0x40bc00
cmp edi, 0xff
jle 0x40bc00
mov edi, 0xff
test ebp, ebp
jge 0x40bc08
xor ebp, ebp
jmp 0x40bc15
cmp ebp, 0xff
jle 0x40bc15
mov ebp, 0xff
test eax, eax
jge 0x40bc1d
xor eax, eax
jmp 0x40bc29
cmp eax, 0xff
jle 0x40bc29
mov eax, 0xff
and edi, 0xff
and ebp, 0xff
shr edi, 2
shr ebp, 2
shl edi, 0xc
shl ebp, 6
and eax, 0xff
or edi, ebp
shr eax, 2
or edi, eax
mov eax, dword [0x472da8]
mov ebp, dword [esp + 0x34]
add ecx, 4
mov dl, byte [edi + eax]
mov edi, dword [esp + 0x18]
mov byte [esp + 0x20], dl
mov edx, dword [0x472d70]
mov eax, dword [esp + 0x20]
add ecx, 4
and eax, 0xff
lea eax, [edx + eax*4 + 0x28]
xor edx, edx
mov dl, byte [eax]
sub edx, ebx
mov ebx, dword [esp + 0x1c]
mov dword [ecx - 8], edx
xor edx, edx
mov dl, byte [eax + 1]
sub edx, ebp
mov ebp, dword [esp + 0x4c]
mov dword [ecx - 4], edx
xor edx, edx
mov dl, byte [eax + 2]
mov al, byte [esp + 0x20]
sub edx, edi
mov dword [ecx], edx
mov edx, dword [esp + 0x2c]
add ecx, 4
mov edi, edx
mov byte [edx], al
mov eax, dword [esp + 0x40]
inc edi
dec eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x40], eax
jne 0x40bb1a
jmp 0x40bd48
test ebx, ebx
jle 0x40bd48
mov ecx, ebx
mov eax, dword [esi]
and eax, 0xffffff
cmp eax, 0x95228c
jne 0x40bce2
mov byte [edi], 0
add esi, 3
jmp 0x40bd40
cmp eax, 0x611e6f
jne 0x40bcf1
mov byte [edi], 1
add esi, 3
jmp 0x40bd40
mov al, byte [esi]
mov dl, byte [esi + 1]
inc esi
mov byte [esp + 0x44], al
inc esi
mov byte [esp + 0x38], dl
mov edx, dword [esp + 0x44]
mov al, byte [esi]
and edx, 0xff
mov byte [esp + 0x3c], al
mov eax, dword [esp + 0x38]
and eax, 0xff
inc esi
shr edx, 2
shr eax, 2
shl edx, 0xc
shl eax, 6
or edx, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
shr eax, 2
or edx, eax
mov eax, dword [0x472da8]
mov dl, byte [edx + eax]
mov byte [edi], dl
inc edi
dec ecx
mov dword [esp + 0x2c], edi
jne 0x40bccc
mov eax, dword [esp + 0x24]
add esi, ebp
dec eax
mov dword [esp + 0x24], eax
jne 0x40bafa
jmp case.0x40b522.7
mov eax, dword [esp + 0x14]
test eax, eax
jle case.0x40b522.7
mov dword [esp + 0x24], eax
mov al, byte [0x470d94]
test al, al
je 0x40bf38
mov eax, dword [esp + 0x28]
lea ecx, [eax + 0xc]
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x40bfc4
mov dword [esp + 0x40], eax
mov eax, dword [esi]
and eax, 0xffffff
cmp eax, 0x95228c
jne 0x40bdc6
mov byte [edi], 0
mov dword [ecx], 0
add ecx, 4
add esi, 4
mov dword [ecx], 0
add ecx, 4
mov dword [ecx], 0
add ecx, 4
jmp 0x40bf1f
cmp eax, 0x611e6f
jne 0x40bdd2
mov byte [edi], 1
jmp 0x40bda3
mov dl, byte [esi]
mov al, byte [esi + 1]
inc esi
mov ebp, dword [ecx]
inc esi
mov byte [esp + 0x44], dl
mov byte [esp + 0x38], al
mov eax, dword [ecx - 0xc]
mov dl, byte [esi]
mov ebx, dword [esp + 0x44]
mov byte [esp + 0x3c], dl
mov edx, dword [ecx + 0xc]
add eax, edx
and ebx, 0xff
add eax, ebp
mov edi, ebx
mov ebp, dword [esp + 0x38]
add esi, 2
lea eax, [eax + eax*4]
and ebp, 0xff
cdq
and edx, 7
mov dword [esp + 0x34], ebp
add eax, edx
mov edx, dword [ecx - 8]
sar eax, 3
sub edi, eax
mov eax, dword [ecx + 0x10]
add eax, edx
mov edx, dword [ecx + 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add eax, edx
mov edx, dword [ecx + 8]
sar eax, 3
sub ebp, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x14]
add eax, edx
mov edx, dword [ecx - 4]
add eax, edx
lea eax, [eax + eax*4]
cdq
and edx, 7
add edx, eax
mov eax, dword [esp + 0x18]
sar edx, 3
sub eax, edx
test edi, edi
jge 0x40be6d
xor edi, edi
jmp 0x40be7a
cmp edi, 0xff
jle 0x40be7a
mov edi, 0xff
test ebp, ebp
jge 0x40be82
xor ebp, ebp
jmp 0x40be8f
cmp ebp, 0xff
jle 0x40be8f
mov ebp, 0xff
test eax, eax
jge 0x40be97
xor eax, eax
jmp 0x40bea3
cmp eax, 0xff
jle 0x40bea3
mov eax, 0xff
and edi, 0xff
and ebp, 0xff
shr edi, 2
shr ebp, 2
shl edi, 0xc
shl ebp, 6
and eax, 0xff
or edi, ebp
shr eax, 2
or edi, eax
mov eax, dword [0x472da8]
mov ebp, dword [esp + 0x34]
add ecx, 4
mov dl, byte [edi + eax]
mov edi, dword [esp + 0x18]
mov byte [esp + 0x20], dl
mov edx, dword [0x472d70]
mov eax, dword [esp + 0x20]
add ecx, 4
and eax, 0xff
lea eax, [edx + eax*4 + 0x28]
xor edx, edx
mov dl, byte [eax]
sub edx, ebx
mov dword [ecx - 8], edx
xor edx, edx
mov dl, byte [eax + 1]
sub edx, ebp
mov dword [ecx - 4], edx
xor edx, edx
mov dl, byte [eax + 2]
mov al, byte [esp + 0x20]
sub edx, edi
mov dword [ecx], edx
mov edx, dword [esp + 0x2c]
add ecx, 4
mov edi, edx
mov byte [edx], al
mov eax, dword [esp + 0x40]
inc edi
dec eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x40], eax
jne 0x40bd92
jmp 0x40bfc4
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x40bfc4
mov ecx, eax
mov eax, dword [esi]
and eax, 0xffffff
cmp eax, 0x95228c
jne 0x40bf5c
mov byte [edi], 0
add esi, 4
jmp 0x40bfbc
cmp eax, 0x611e6f
jne 0x40bf6b
mov byte [edi], 1
add esi, 4
jmp 0x40bfbc
mov al, byte [esi]
mov dl, byte [esi + 1]
inc esi
mov byte [esp + 0x44], al
inc esi
mov byte [esp + 0x38], dl
mov edx, dword [esp + 0x44]
mov al, byte [esi]
and edx, 0xff
mov byte [esp + 0x3c], al
mov eax, dword [esp + 0x38]
and eax, 0xff
add esi, 2
shr edx, 2
shr eax, 2
shl edx, 0xc
shl eax, 6
or edx, eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
shr eax, 2
or edx, eax
mov eax, dword [0x472da8]
mov dl, byte [edx + eax]
mov byte [edi], dl
inc edi
dec ecx
mov dword [esp + 0x2c], edi
jne 0x40bf46
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x24], eax
jne 0x40bd6e
mov ecx, dword [esp + 0x28]
call fcn.00435be0
mov eax, dword [esp + 0x48]
cmp eax, 0x18
je 0x40bfee
cmp eax, 0x20
je 0x40bfee
xor eax, eax
jmp 0x40bff3
mov eax, 1
test byte [esp + 0xc8], al
je 0x40c141
mov esi, dword [esp + 0x1c]
mov ecx, 1
mov dword [esp + 0x24], ecx
lea esi, [esi + esi*2]
lea eax, [esi + 2]
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, ecx
jle 0x40c02a
shl ecx, 1
cmp ecx, eax
jl 0x40c020
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x14]
mov ebx, 1
mov dword [esp + 0x20], ebx
lea eax, [eax + eax*2 + 2]
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, ebx
jle 0x40c052
shl ebx, 1
cmp ebx, eax
jl 0x40c048
mov dword [esp + 0x20], ebx
mov eax, ebx
imul eax, dword [esp + 0x24]
lea ecx, [eax + eax*4]
call fcn.00435b70
mov ebp, dword [esp + 0x50]
mov edi, dword [esp + 0x48]
mov ecx, dword [ebp]
mov dword [ecx + 0x20], 1
mov ecx, dword [0x473264]
lea ecx, [ecx + ecx*4]
lea edx, [ecx + ecx*4]
mov ecx, dword [0x47326c]
lea edx, [ecx + edx*4]
mov ecx, dword [ebp]
mov dword [ecx + 0x28], edx
mov ecx, dword [ebp]
xor edx, edx
cmp edi, 0x20
sete dl
mov dword [ecx + 0x2c], edx
mov edx, dword [ebp]
xor ecx, ecx
cmp edi, 0x18
mov dword [edx + 0x48], ecx
mov dword [edx + 0x4c], ecx
mov edx, dword [esp + 0x64]
mov ecx, eax
jne 0x40c0f8
mov edi, dword [esp + 0x1c]
lea edi, [edi + edi*2 + 3]
and edi, 0xfffffffc
sub edi, esi
mov esi, dword [esp + 0x14]
test esi, esi
jle 0x40c133
mov ebp, esi
mov esi, dword [esp + 0x1c]
test esi, esi
jle 0x40c0ed
mov ebx, dword [edx]
add ecx, 4
and ebx, 0xffffff
add edx, 3
mov dword [ecx - 4], ebx
mov byte [ecx], 0
inc ecx
dec esi
jne 0x40c0d1
mov ebx, dword [esp + 0x20]
add edx, edi
dec ebp
jne 0x40c0c9
mov ebp, dword [esp + 0x50]
jmp 0x40c133
mov esi, dword [esp + 0x14]
test esi, esi
jle 0x40c133
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x1c]
test esi, esi
jle 0x40c128
mov edi, dword [edx]
add ecx, 4
xor edi, 0xff000000
add edx, 4
mov dword [ecx - 4], edi
mov byte [ecx], 0
inc ecx
dec esi
jne 0x40c10c
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
dec edi
mov dword [esp + 0x20], edi
jne 0x40c108
mov ecx, dword [esp + 0x24]
push ebx
push ecx
push eax
mov ecx, ebp
call fcn.00408970
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x58]
test al, al
jne 0x40c151
mov ecx, dword [esp + 0x30]
call fcn.00435be0
lea ecx, [esp + 0x68]
call fcn.00408940
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret 4
mov dword [0x473a28], esi
pop edi
pop esi
pop ebp
mov byte [0x473a18], 1
pop ebx
add esp, 0xb4
ret 4